Я создаю пользовательскую веб-часть в SharePoint, которая отображает форму для создания новых элементов списка. У меня есть listfielditerator с установленным ListId и ControlMode.New, а также кнопка сохранения. Это работает!
Единственным дополнительным функционалом является наложение динамических значений по умолчанию на визуализированные элементы управления полями. Я думал, что смогу добиться этого следующим образом:
В OnInit, чтобы заставить работать итератор:
SPContext.Current.FormContext.FormMode = SPControlMode.New;
newFormIterator.ListId = SPContext.Current.Web.Lists["MyList"].ID;
newFormIterator.ItemContext = SPContext.GetContext(HttpContext.Current,0, newFormIterator.ListId, SPContext.Current.Web);
В OnInit или OnLoad или OnPrerender, чтобы установить значения:
TextField field = (TextField)newFormIterator.Fields["Customer"].FieldRenderingControl;
//field.ItemContext = newFormIterator.ItemContext;
//field.RenderContext = newFormIterator.ItemContext;
//field.ListItemFieldValue = settings.CustomerName;
field.Value = settings.CustomerName;
field.UpdateFieldValueInItem();
Я пробовал также закомментированные строки, но безрезультатно. Проблема с этим исключением, потому что field.Item имеет значение null при вызове UpdateFieldValueInItem ().
Вопросы:
- Как правильно использовать listfielditerator вне listcontext (в веб-части на обычной странице). Я пропустил контекст?
- Как установить значения по умолчанию для полей в listfielditerator, отличных от указанных в полях типов содержимого списка.
Ресурсы для чтения:
http://karinebosch.wordpress.com/sharepoint-controls/listfielditerator/
http://pholpar.wordpress.com/2009/12/