Я создал пользовательскую форму редактирования в виде простой aspx-страницы в VS2010 (унаследовано от LayoutsPageBase), которая использует элемент управления SharePoint для веб-элементов управления LookupField для отображения раскрывающегося списка значений из пользовательского типа
.Форма отображается правильно с раскрывающимся окном, содержащим ожидаемый диапазон значений
ControlMode установлен так же, как FormContext (хотя я попытался явно установить это для Edit)
Но наДля обратной передачи значение раскрывающегося списка не задано - для индекса выбранного элемента установлено значение -1
Как правильно использовать элемент управления LookupField для получения выбранного значения от пользователя?
Можетэто потому, что я добавляю элементы управления в aspx, а затем устанавливаю идентификатор списка и т. д. из SPContext в событии загрузки страницы?- см. фрагмент кода ниже (не самый красивый, но просто пытающийся заставить его работать в данный момент):
из aspx:
<SharePoint:FileField ID="FileNameText" InputFieldLabel="Name" runat="server" ControlMode="Display"/><br />
<SharePoint:LookupField ID="FeedType" runat="server" />
<SharePoint:TextField ID="FeedStatus" runat="server" />
....
в коде загрузки страницы:
if (!IsPostBack)
{
SPItem feedFileItem = SPContext.Current.Item;
FileNameText.ControlMode = SPContext.Current.FormContext.FormMode;
FileNameText.ListId = SPContext.Current.ListId;
FileNameText.ItemId = SPContext.Current.ItemId;
FileNameText.FieldName = "Name";
FeedType.ControlMode = SPControlMode.Edit;
FeedType.ListId = SPContext.Current.ListId;
FeedType.ItemId = SPContext.Current.ItemId;
FeedType.FieldName = "FeedType";
FeedStatus.ItemContext = SPContext.Current;
FeedStatus.RenderContext = SPContext.Current;
FeedStatus.ControlMode = SPControlMode.Edit;
FeedStatus.ListId = SPContext.Current.ListId;
FeedStatus.ItemId = SPContext.Current.ItemId;
FeedStatus.FieldName = "FeedStatus";
}
UPDATE
Хорошо, мне удалось заставить мою форму работать, добавив элементы управления в коде в переопределении CreateChildControls- это соответствует большинству примеров, которые я видел в сети.
Но кто-то может объяснить, почему мой подход не сработал и могу ли я сделать все это декларативным способом в aspx