XsltListViewWebPart и настраиваемые представления списков
Дата последнего изменения: 9 марта 2015 г.
Применимо к: SharePoint Foundation 2010
Новый класс XsltListViewWebPart в Microsoft SharePoint Foundation 2010 является производным от класса DataFormWebPart на основе XSL. Он заменяет класс ListViewWebPart в качестве типа представления по умолчанию в представления списков, хотя он создает эквивалентную HTML-разметку для тех же настроек представления. Аналогично, класс XsltListFormWebPart заменяет класс ListFormWebPart в качестве типа представления по умолчанию в формах элементов списков. В отличие от класса ListViewWebPart класс XsltListViewWebPart использует XSLT-преобразования для определения визуализации HTML-разметки вместо использования элементов визуализации HTML Схемы представленияязыка CAML. XSLT-файлы, применяемые с помощью класса XsltListViewWebPart, кэшируются на каждом интерфейсном веб-сервере и поддерживают все языки вместо одного языка на XSLT-файл. Таким образом увеличивается масштабируемость SharePoint Foundation, так как каждый XSLT-файл компилируется и занимает лишь небольшое количество ресурсов сервера. Кроме того, класс XsltListViewWebPart использует ASP.NET AJAX для выполнения специальной фильтрации вместо подхода IFrame, применяемого в CAML, а результатом XSLT-преобразований, выполняемы с помощью класса XsltListViewWebPart, является XHTML. Используются ли они в представлениях списков или в формах элементов, класс XsltListViewWebPart и XSLT-шаблоны предоставляют оптимальный способ выполнения требований ASP.NET AJAX, XHTML и внешних данных к представлениям SharePoint Foundation, одновременно обеспечивая конвергенцию в одну настраиваемую технологию представлений.
Представления в браузере можно настроить с помощью пользовательского интерфейса SharePoint Foundation, в Microsoft SharePoint Designer 2010 или в Microsoft Visual Studio 2010. Для определения настраиваемых представлений списков можно реализовать пользовательский XSLT-файл в классе XsltListViewWebPart. Пользовательский XSLT-файл может переопределить лишь некоторые шаблоны в XSLT-файле по умолчанию или полностью заменить их. Пользовательские XSLT-файлы можно развернуть либо в папку "%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES", либо в папку "%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS". Представления списков на основе XSLT-шаблонов можно определить в разделе <Views> файла Schema.xml определения списка, используя в определении представления элемент XslLink. Сведения об использовании XSLT-шаблонов SharePoint Foundation и об установленных по умолчанию XSLT-шаблонах см. в статье Обзор систем отображения представлений списков с помощью XSLT-преобразований.
XsltListViewWebPart создает HTML-представление списка из XML-данных, полученных при выполнении запроса, определенного в элементе Query свойства XmlDefinition веб-части. Кроме запроса, свойство XmlDefinition содержит описания различных атрибутов представления, включая используемый базовый стиль представления (например Basic Table или Boxed), отображаемые в представлении поля, число строк данных, отображаемых на одной странице, и остальные параметры настройки, заданные в файле Schema.xml списка. Описание списка в файле Schema.xml служит исходным деревом узлов для процессора XSLT, выполняющего синтаксический разбор схемы для создания результирующего дерева, содержащегося в свойстве XmlDefinition.
Синтаксис свойства XmlDefinition основан на свойстве SharePoint FoundationListViewXml класса ListViewWebPart. Класс XsltListViewWebPart использует описание запроса в свойстве XmlDefinition для создания элемента управления SPDataSource и возвращает данные в виде XML-разметки. Затем веб-часть выполняет XSLT-преобразование XML-данных, используя параметры, содержащие схему списка и описание представления XmlDefinition. XSLT-шаблон не учитывает схему, то есть адаптируется к схеме списка, на который указывает ссылка. Можно добавить или удалить поля, или изменить их тип, и XSLT-шаблон, тем не менее, обеспечит правильную визуализацию представления. XSLT-шаблон адаптируется к настройкам представления, определенным в свойстве XmlDefinition, таким как стиль представления. В нем используется <xsl:apply-templates> для итерации по каждой строке данных и по каждому полю представления с применением способа, определенного стилем представления и схемой списка. Соответствующие XSLT-шаблоны создают HTML-результат, который затем отправляется браузеру. Сведения об использовании в представлениях списка XSLT-шаблона XML-разметки dsQueryResponse для визуализации данных XML см. в статье Примеры входного дерева узлов и результирующего дерева узлов в XSLT-преобразованиях.
При использовании пользовательского интерфейса SharePoint Foundation для изменения представления в браузере изменяются декларативные параметры свойства XmlDefinition веб-части в соответствующей зоне веб-части. Это заставляет веб-часть создать HTML-разметку, эквивалентную классу SharePoint FoundationListViewWebPart. Затем можно настроить эту веб-часть в SharePoint Designer, что не потребует преобразования и не помешает внести дополнительные изменения в браузере. XSLT-шаблон для веб-части остается неизменным, кэшируется в местоположении только для чтения на интерфейсном веб-сервере и повторно используется всеми элементами управления XsltListViewWebPart. Изменения, внесенные в SharePoint Designer, переопределяют кэшированный XSLT-шаблон и записываются в свойство Xsl веб-части. SharePoint Foundation использует преимущества правил приоритета при импорте и соответствующего шаблону поведения в XSLT, чтобы переопределить только указанные шаблоны. Это позволяет разработчику внести тонкие изменения в создаваемую HTML-разметку, не влияя на XSLT-файлы интерфейсных серверов и не копируя изменения в веб-часть. В свойстве Xsl веб-части сохраняются только переопределенные шаблоны.
Вывод веб-части XsltListViewWebPart
Класс XsltListViewWebPart наследуется от класса DataFormWebPart в соответствии со следующей иерархией.
Наследуемые свойства
Класс XsltListViewWebPart наследует многие члены от класса DataFormWebPart, в том числе члены, перечисленные в следующей таблице. В этой таблице показано, сохраняется ли XML-эквивалент для каждого свойства как элемент или атрибут.
Имя свойства |
Хранение в XML |
Описание |
---|---|---|
Элемент |
Необязательный элемент. Определяет объект DataSourceCollection, представляющий интерфейсы IDataSource. Обычно при визуализации представления вместо этого для синтеза элемента управления источника данных (SPDataSource) используется свойство XmlDefinition. Если это свойство присутствует в XsltListViewWebPart, возникает исключение. |
|
Атрибут |
Содержит ссылку на список, использующий локализованное отображаемое имя, например Announcements. |
|
Атрибут |
Содержит ссылку на список в формате {GUID} с тем же синтаксисом, что и у эквивалентного атрибута ListViewWebPart. |
|
Атрибут |
Содержит ссылку на список в формате URL-адреса относительно веб-сайта, например Lists/Announcements. |
|
Элемент |
Содержит допустимый элемент View, который использует тот же синтаксис, который поддерживался классом SharePoint FoundationListViewWebPart, за исключением тегов визуализации CAML (см. XMLDefinition и схема представлений CAML). |
|
Атрибут |
Определяет в формате URL-адреса ссылку на XML-файл, определяющий содержание свойства XmlDefinition. |
|
Элемент |
Необязательный элемент. Содержит строенную таблицу стилей. |
|
Элемент |
Необязательный элемент. Содержит URL-адрес, определяющий XSLT-файл, используемый для преобразования. |
Должно присутствовать одно из свойств List* (ListName, ListUrl или ListDisplayName), которое должно определять ссылку на действительный список. При наличии нескольких свойств используется следующий порядок оценки: ListName, потом ListUrl, а потом ListDisplayName.
Наличие нескольких свойств XmlDefinition* (XmlDefinition или XmlDefinitionLink) должно приводить к созданию правильного элемента View. В противном случае вместо него используется определение списка по умолчанию (другими словами из файла Schema.xml). При наличии нескольких свойств используется следующий порядок оценки: XmlDefinitionLink, а потом XmlDefinition.
Как и в случае свойства Xsl и свойства XslLink класса DataFormWebPart, используется следующий порядок оценки: сначала XslLink, а потом XSL. Если не задано ни свойство XSL, ни свойство XslLink, для преобразования используется XSLT-файл, на который ссылается элемент View в файле Schema.xml. Наличие свойства XSL или свойства XslLink показывает, что представление было настроено в SharePoint Designer, чтобы переопределить XSLT-шаблон по умолчанию, кэшированный и ненастроенный. Свойство XSL никогда не изменяется из пользовательского интерфейса SharePoint Foundation, но только с помощью SharePoint Designer при выполнении явных действий по форматированию (в отличие от изменения запроса). Например, условное форматирование в SharePoint Designer требует, чтобы разработчик обновил содержание XSL, а добавление и удаление столбцов этого не требуют.
Метод GetDataSource() класса XsltListViewWebPart переопределяет метод GetDataSource() класса DataFormWebPart. Класс XsltListViewWebPart сначала разрешает ссылку на список, а заем создает элемент управления для источника данных (SPDataSource), используя содержимое свойства XmlDefinition.
См. также
Концепции
Обзор систем отображения представлений списков с помощью XSLT-преобразований
Примеры входного дерева узлов и результирующего дерева узлов в XSLT-преобразованиях
XMLDefinition и схема представлений CAML
Инструкции. Настройка визуализации поля в представлении списка