Значения по умолчанию для SharePoint ListfieldIterator - PullRequest
1 голос
/ 08 февраля 2012

Я создаю пользовательскую веб-часть в 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 ().

Вопросы:

  1. Как правильно использовать listfielditerator вне listcontext (в веб-части на обычной странице). Я пропустил контекст?
  2. Как установить значения по умолчанию для полей в listfielditerator, отличных от указанных в полях типов содержимого списка.

Ресурсы для чтения:

http://karinebosch.wordpress.com/sharepoint-controls/listfielditerator/

http://pholpar.wordpress.com/2009/12/

1 Ответ

0 голосов
/ 12 февраля 2012

Полагаю, вам не следует вызывать field.UpdateFieldValueInItem ();напрямую - достаточно установить значение для управления рендерингом поля в OnInit.UpatedFieldValueInItem () будет вызываться автоматически при нажатии кнопки SaveButton и создании элемента.Поэтому попробуйте просто так:

TextField field = (TextField) newFormIterator.Fields ["Customer"]. FieldRenderingControl;field.Value = settings.CustomerName;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...