Я создал свой настраиваемый тип поля для перечисления доступных пользователей в раскрывающемся списке. Класс My Field наследуется от SPFieldChoice, а класс FieldControl наследуется от DropDownChoiceField. Теперь я написал код внутри класса FieldControl как,
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();
т.е. я пытаюсь отобразить раскрывающийся список с именами пользователей. Теперь свойство Value:
public override object Value
{
get
{
EnsureChildControls();
return this.ddlInfoBox.SelectedValue;
}
set
{
EnsureChildControls();
this.ddlInfoBox.SelectedValue = (string)this.ItemFieldValue;
}
}
Допустим, я закончил с настраиваемым типом поля, когда я использую это поле в списке с именем «Temp» и пытаюсь создать элемент списка, он показывает мне доступных пользователей для этого сайта, когда я создаю элемент, данные будут сохранены как строка для выбранного пользователя, и когда я пытаюсь просмотреть этот список как веб-часть, отфильтровав значение пользователя как [Me]. то есть документы, назначенные мне, это не позволило мне сделать, потому что это строковое значение, а не значение SPFieldUser. Как я могу сохранить это строковое значение как SPFieldUser, которое обычные люди и группа хранят в типе поля Out of the box?