2009-06-24 18 views
1

私はドロップダウンリストに利用可能なユーザをリストするためのカスタムフィールドタイプを作成しました。 My FieldクラスはSPFieldChoiceから継承し、FieldControlクラスはDropDownChoiceFieldから継承します。私はユーザー名とドロップダウンリストをレンダリングしようとしていますカスタムフィールドタイプのドロップダウンリストの共有ポイント

this.ddlInfoBox = new DropDownList();  
SPSite site = SPContext.GetContext(this.Context).Site; 
SPWeb cWeb = SPContext.Current.Web; 
Hashtable ht = new Hashtable(); 
SPUserCollection spUsers = cWeb.AllUsers; 
foreach (SPUser item in spUsers) 
{  
    SPFieldUser o= new SPFieldUser(
    ht.Add(item.Name, item); 
} 
this.ddlInfoBox.DataTextField = "Key"; 
this.ddlInfoBox.DataValueField = "Value"; 
this.ddlInfoBox.DataSource = ht; 
this.ddlInfoBox.DataBind(); 

すなわち、として は今、私はFieldControlクラス内のコードを書かれています。今、Valueプロパティがあり、

public override object Value 
{ 
    get 
    { 
     EnsureChildControls();     
     return this.ddlInfoBox.SelectedValue; 
    } 

    set 
    { 
     EnsureChildControls();     
     this.ddlInfoBox.SelectedValue = (string)this.ItemFieldValue; 
    } 
} 

レッツは、私は「温度」という名前のリストには、このフィールドを使用して、リスト項目を作成しようとしたとき、それは私にこのサイトで使用可能なユーザーを示し、私はカスタムフィールドタイプで行われていますと言います私が項目を作成するとき、データは選択されたユーザーのための文字列として格納され、私は[Me]としてユーザー値をフィルタリングしてWebパーツとしてそのリストを表示しようとします。 SPFieldUser値ではない文字列値であるため、私に割り当てられたドキュメント、それは私に任せていませんでした。 この文字列の値をSPFieldUserとして保存するにはどうしたらいいですか?

+0

なぜあなたはValueプロパティからEnsureChildControlsを呼び出していますか? ASP.NETページのライフサイクルに影響する可能性があるため、十分注意してください。 –

答えて

1

SPFieldChoiceではなくSPFieldUserから派生できませんか? DropDownChoiceFieldではUserFieldを使用しますか?

0
SPUserCollection userscollection = rootWeb.SiteUsers; 
SPUser user = userscollection.Web.EnsureUser("Domain\username"); 
SPFieldUserValue userval = 
    new SPFieldUserValue(user.ParentWeb, user.ID, user.LoginName); 
関連する問題