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


Практическое руководство. Создание шаблонов отображения полей

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

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

В этой статье
Отношение шаблонов отображения и элементов управления отображением
Система шаблона отображения
Настройка отображения полей
Сценарии с несколькими шаблонами отображения
Добавление дополнительных связей шаблонов
Использование пользовательских веб-элементов управления в качестве шаблонов

Шаблон отображения полей является объектом RenderingTemplate, который определен как элемент RenderingTemplate в ASCX-файле в папке %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\controltemplates. Он используется совместно с методом CreateChildControlsкласса управления отображением для отображения поля в режимах создания и редактирования и иногда в режиме отображения.

Отношение шаблонов отображения и элементов управления отображением

Объект RenderingTemplate является видом гибридного объекта Control-ITemplate. Он происходит от Control и добавляет только один новый член — свойство Template, которое содержит объект ITemplate. Это дает возможность элементу управления отображением (производном от TemplateBasedControl) ссылаться на объекты ITemplate косвенно с помощью ссылки на объект RenderingTemplate посредством свойства идентификатора шаблона отображения (ID). Элемент управления отображением может делать это с помощью одного или нескольких свойств String, которые он имеет, таких как TemplateName, которые могут содержать идентификатор шаблона отображения.

Система шаблона отображения

Каждый элемент управления отображением поля имеет минимум один шаблон отображения поля, связанный с ним. Во время отображения SharePoint Foundation просматривает требуемый шаблон посредством поиска идентификаторов всех элементов управления, объявленных в ASCX-файлах в папке %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES (все из них загружаются при запуске веб-приложения).

Настройка отображения полей

Паттерн конфигурации отображения поля, который можно найти самостоятельно в соответствии с характеристиками наиболее часто используемых типов полей:

  • Элемент управления отображением связан с двумя шаблонами отображения и использует свойства TemplateName и DisplayTemplateName для указания идентификаторов шаблонов.

  • Этот шаблон обеспечивает большую часть работы по отображению полей в режимах создания и редактирования. (Другой обеспечивает большую часть работы по отображению полей в режиме отображения.

  • Метод CreateChildControls элемента управления отображением в режиме создания назначает значения по умолчанию дочерним элементам управления элемента управления отображением. Он назначает текущие значения поля дочерним элементам управления в режиме редактирования и отображения.Он также может выполнять другую конечную работу по отображению, такую как назначение CSS-класса дочернему элементу управления Label.

  • Логика проверки реализована членами элементов управления отображением Validate, IsValid и ErrorMessage и ниже расположенным методом типа поля GetValidatedString. (Метод Validate может быть вызван с помощью метода CreateChildControls.)

Объект BaseFieldControl наследуется от членов TemplateBasedControl и FieldMetadata, что позволяет подключать его к нескольким шаблонам отображения и переключаться между ними на основе контекста отображения.

Сценарии с несколькими шаблонами отображения

В дополнение к Template, TemplateName, DisplayTemplate и DisplayTemplateName также можно работать с AlternateTemplate, AlternateTemplateName.

Используйте альтернативный шаблон для отображения пользовательского поля в контексте любой страницы, где главный шаблон не соответствует требованиям. Ниже приведены некоторые примеры.

  • Если поле требуется в одних списках и не нужно в других, можно создать альтернативный шаблон, который полностью повторяет главный и включает дополнительный индикатор (например, красную звездочку), указывающий, что поле в определенных списках является обязательным. Затем метод доступа get свойства ControlTemplate должен проверить свойство Required базового поля и вернуть либо Template, либо AlternateTemplate.

  • Если планируется использовать много типов пользовательских полей, которые будут отображаться практически одинаково, можно добиться большей эффективности повторного использования кода за счет создания отдельных шаблонов для использования в режимах создания и редактирования. В режиме создания дочерним объектам будут назначаться значения по умолчанию, а в режиме редактирования — текущие значения. Это позволит избежать повторения правил назначения в методе CreateChildControls для каждого класса типа пользовательского свойства. Опять же метод доступа get свойства ControlTemplate определяет используемый шаблона на основании режима элемента управления.

  • Использование альтернативного шаблона также может быть полезно, когда поле должно по-разному отображаться в разных веб-сайтах, семействах сайтов или веб-приложениях. Например, на веб-сайте, предназначенном для людей с нарушениями зрения, например, страдающим дальтонизмом. Метод доступа get свойства ControlTemplate может проверять значение свойства RenderContext, чтобы определить, не требуется ли специальный шаблон, и возвращать его.

  • Для пользовательских типов полей, которые наследуются от SPFieldNumber и иногда, но не всегда, должны отображаться в виде процентов, значительно может сэкономить время разработки наличие двух разных шаблонов отображения. Переопределите метод доступа get свойства ControlTemplate, чтобы он реагировал на значение свойства SPFieldNumber.ShowAsPercentage.

Добавление дополнительных связей шаблонов

Разумеется, можно добавить дополнительные связи шаблонов отображения к элементу управления отображением поля, который наследуется от BaseFieldControl. Рекомендуется следовать этой схеме.

  • Создайте новое частное поле типа ITemplate.

  • Создайте новое открытое свойство в качестве оболочки для частного поля и назовите его условияШаблон, где условия определяют обстоятельства, в которых планируется использовать этот шаблон.

  • Создайте второе открытое свойство, возвращающее String, и назовите его условияИмяШаблона.

  • Метод доступа get для свойства условияШаблон должен возвращать частное поле, только если последнее не равно null. Если это не так, он должен возвращать ITemplate с именем условияИмяШаблона. Для этого используется метод GetTemplateByName().

  • Переопределите метод доступа get свойства ControlTemplate, чтобы он возвращал условияШаблон всегда, когда значением условия является true.

Использование пользовательских веб-элементов управления в качестве шаблонов

Пользовательский элемент управления отображением поля также наследует два специальных свойства ITemplate: CustomTemplate и CustomAlternateTemplate. Эти два свойства отмечены атрибутом [PersistenceMode(PersistenceMode.InnerProperty)]. Это означает, что возвращаемые ими объекты ITemplate являются скомпилированными и сохраняются внутри элемента управления отображением поля в виде вложенных тегов. У использования заранее скомпилированных шаблонов имеется несколько преимуществ. Например, их можно добавлять на страницу в визуальном конструкторе, таком как SharePoint Designer или Visual Studio, путем перетаскивания из панели инструментов конструктора. Однако у них также имеются недостатки. Дополнительные сведения о пользовательских и настраиваемых веб-элементах управления см. в разделах Web User Controls and Web Custom Controls и PersistenceModeAttribute.

См. также

Задачи

Пример: создание типа настраиваемого поля

Концепции

Типы настраиваемых полей

Инструкции. Создание настраиваемого класса поля

Проверка данных в настраиваемых полях

Создание настраиваемого класса значения поля

Практическое руководство. Создание определения настраиваемого типа поля

Отображение свойств настраиваемого типа поля

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

Инструкции: создание элемента управления визуализацией поля

Практическое руководство. Создание настраиваемого типа поля