Поделиться через


Элементы управления форм и полей

Дата последнего изменения: 9 апреля 2010 г.

Применимо к: SharePoint Foundation 2010

Форма Microsoft SharePoint Foundation содержит элементы управления ASP.NET, которые определяют форму, а также поля и другие элементы формы. Элементы управления SharePoint следуют иерархии элементов управления, в которой имеется базовый элемент управления, производными которого являются все элементы управления.

Элементы управления, используемые в формах SharePoint, определяются в пространстве имен Microsoft.SharePoint.WebControls, и они поддерживают все функции формы SharePoint Foundation. Это пространство имен предоставляет, например, элемент управления, который отображает поля на основе схемы списка, элементы управления для всех типов полей SharePoint по умолчанию, элементы управления для панели инструментов, для верхнего и нижнего колонтитулов, а также элемент управления для списка. Можно повторно использовать существующие элементы управления или расширять элементы управления своими функциями.

На Рис. 1 показана иерархия элементов управления, наиболее часто употребляемых в формах и их полях.

Рис. 1. Распространенные элементы управления форм и полей

Иерархия элементов управления форм

Расширение элементов управления

Можно создать элементы управления настраиваемых полей, которые наследуют базовые функции поля элементов управления SharePoint Foundation, но изменяют способ обработки полей. Элемент управления настраиваемого поля наследует от Microsoft.SharePoint.WebControls.BaseFieldControl, так что ему не нужно повторно реализовывать базовые функции поля для настройки обработки поля. Можно просто вставить в страницу формы существующий элемент управления поля и установить на нем свойства, либо можно создать класс с выделенным кодом, который добавляет элемент управления.

Инициализация страницы

Если элемент управления поля создается программным способом с помощью фонового кода, элемент управления необходимо создавать на этапе инициализации жизненного цикла страницы (Page_Init). В противном случае, поскольку ASP.NET загружает состояние просмотра до этапа загрузки, элемент управления поля не получает при своем создании обновленные данные пользовательского ввода.

В следующем примере иллюстрируется вызов Page_Init.

Public Sub New()
    AddHandler Me.Init, AddressOf Page_Init
End Sub
Private Sub Page_Init(sender As Object, e As System.EventArgs)
    ... 'Add field control to the page control tree.
End Sub
public EditMetadata(): base()
{
    this.Init += new EventHandler(Page_Init);
}
private void Page_Init(object sender, System.EventArgs e)
{
    ... //Add field control to the page control tree.
}

Условная визуализация

SharePoint Foundation поддерживает три разных способа определения, какой шаблон элемента управления следует использовать при визуализации формы:

  • установка его для элемента управления программным способом;

  • установка его в экземпляре элемента управления, установив атрибут шаблона;

  • определение шаблона в исправлениях элемента управления.

При условной визуализации форм и полей с помощью шаблонов элементов управления или фонового кода применяются, например, свойства Template и AlternateTemplate, а также другие элементы, наследуемые от Microsoft.SharePoint.WebControls.TemplateBasedControl. Можно создавать формы, которые выбирают шаблоны, используемые для обработки элементов управления, и которые отображают поля по-разному, в зависимости от уровня разрешений пользователей.

Проверка

В SharePoint Foundation не используются элементы управления проверки .NET. Поля по умолчанию, предоставляемые в пространстве имен Microsoft.SharePoint.WebControls, наследуют от BaseFieldControl, который реализует интерфейс System.Web.UI.IValidator и переопределяет его метод Validate. Серверная проверка в формах SharePoint не ограничена уровнем элементов управления полей и может также выполняться программным способом в коде, который использует объектную модель.

Порядок полей

Схема списка или тип контента определяют порядок полей, в котором они отображаются в форме списка. Элемент управления повторителя Microsoft.SharePoint.WebControls.ListFieldIterator в форме следует порядку полей, определенному в файле схемы списка (Schema.xml). Порядок полей, определенный в схеме, определяет порядок для всех трех режимов элементов управления формы (создание, изменение и отображение).

Элемент управления FormField

Элементы управления FormField можно использовать для создания фиксированной структуры конкретных полей, а элемент управления ListFieldIterator — для обработки оставшихся полей. Элемент управления FormField создает экземпляр зависящего от типа элемента управления поля, основанного на схеме поля. Поэтому для добавления в форму элемента управления поля вместо зависящего от типа элемента управления поля используется FormField. Например, если используется зависящий от типа элемент управления поля, такой как TextField, на определенном поле Text, но в дальнейшем тип поля изменяется, например, на тип данных Number, визуализация поля будет нарушена, поскольку элемент управления поля (TextField) не будет соответствовать типу поля. Однако при использовании элемента управления FormField

устанавливаются правильные функции управления, и визуализация поля не нарушается.

Элемент управления CompositeField

Элемент управления CompositeField полезен, поскольку его используемый по умолчанию шаблон включает несколько элементов управления поля. Элемент управления CompositeField использует FieldLabel для отображения имени файла, FormField — для отображения данных, а FieldDescription — для отображения описания поля. Кроме того, элемент управления CompositeField включает элемент управления AppendOnlyHistory для отображения многострочного поля Text типа AppendOnlyкоторое, остается скрытым в других сценариях.

В следующем примере показан шаблон элемента управления, определенный в DefaultTemplates.ascx для элемента управления CompositeField.

<SharePoint:RenderingTemplate ID="CompositeField" runat="server">
  <Template>
    <TD nowrap="true" valign="top" width="190px" class="ms-formlabel"><H3 class="ms-standardheader">
      <SharePoint:FieldLabel runat="server"/>
    </H3></TD>
    <TD valign="top" class="ms-formbody" width="400px">
      <SharePoint:FormField runat="server"/>
      <SharePoint:FieldDescription runat="server"/>
      <SharePoint:AppendOnlyHistory runat="server"/>
    </TD>
  </Template>
</SharePoint:RenderingTemplate>

Можно создать шаблон итератора настраиваемого поля списка, который включает элемент управления настраиваемого составного поля, как в следующем примере.

<SharePoint:RenderingTemplate ID="CustomListFieldIterator" runat="server">
  <Template>
    <TR>
      <SharePoint:CompositeField Template="CustomCompositeField" runat="server"/>
    </TR>
  </Template>
</SharePoint:RenderingTemplate>