На моей домашней странице я хочу простую веб-часть, которая позволит пользователям быстро заполнить запись в списке.
В списке, скажем, три поля: заголовок (текст), тело (форматированный текст), категория (поиск).
Я не хочу использовать стандартный DataFormWebPart, потому что у меня есть немного кода, который также заполняет некоторые технические скрытые поля моего списка (на самом деле, я не исключаю DataFormWebPart, но я не нашел, как использовать его с кодом позади).
Итак, я начал реализовывать пользовательскую веб-часть. Поскольку я не хочу обрабатывать каждый ввод поля вручную, я начал использовать элемент управления FormField
, который автоматически выбирает элемент управления рендерингом и предоставляет свойство Value
в правильном формате:
<SharePoint:FormField runat="server" id="fldTitle" FieldName="Title" />
Этого кода недостаточно, я должен указать listid:
<SharePoint:FormField runat="server" id="fldTitle" FieldName="Title" ListId="{title list guid}" />
Это работает довольно правильно. Я могу в коде получить доступ к fldTitle.Value
для получения ввода пользователя.
НО Я должен включить веб-часть в правильно упакованную и развернутую функцию, которую можно активировать. Веб-часть всегда будет нацелена на один и тот же список, но так как список также создается в функции (элемент ListInstance), я не могу знать Guid заранее.
Я пытался использовать несколько методов для установки идентификатора списка на лету, но безуспешно.
Я также «отразил» библиотеки SP, чтобы заметить, что класс FormComponent использует «Context», который устанавливается ListFormWebPart.
Наконец, мои вопросы:
- это правильный способ создания настраиваемой веб-части ввода на главной странице (не настраиваемая форма списка)?
- как мне сохранить поведение FormField (выбрать правильный элемент управления и обработать ввод и его преобразование в формат хранения)?
- Придется ли мне создавать собственный ListFormWebPart?
- Могу ли я играть с ControlTemplates?
заранее спасибо за помощь ... Я борюсь с этим простым делом уже несколько дней ...