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 в соответствии со следующей иерархией.

Object

  Control

    WebControl

      Panel

        Part

          WebPart

            WebPart

              BaseXsltDataWebPart

                DataFormWebPart

                  BaseXsltListWebPart

                    XsltListViewWebPart

Наследуемые свойства

Класс XsltListViewWebPart наследует многие члены от класса DataFormWebPart, в том числе члены, перечисленные в следующей таблице. В этой таблице показано, сохраняется ли XML-эквивалент для каждого свойства как элемент или атрибут.

Имя свойства

Хранение в XML

Описание

DataSources

Элемент

Необязательный элемент. Определяет объект DataSourceCollection, представляющий интерфейсы IDataSource. Обычно при визуализации представления вместо этого для синтеза элемента управления источника данных (SPDataSource) используется свойство XmlDefinition. Если это свойство присутствует в XsltListViewWebPart, возникает исключение.

ListDisplayName

Атрибут

Содержит ссылку на список, использующий локализованное отображаемое имя, например Announcements.

ListName

Атрибут

Содержит ссылку на список в формате {GUID} с тем же синтаксисом, что и у эквивалентного атрибута ListViewWebPart.

ListUrl

Атрибут

Содержит ссылку на список в формате URL-адреса относительно веб-сайта, например Lists/Announcements.

XmlDefinition

Элемент

Содержит допустимый элемент View, который использует тот же синтаксис, который поддерживался классом SharePoint FoundationListViewWebPart, за исключением тегов визуализации CAML (см. XMLDefinition и схема представлений CAML).

XmlDefinitionLink

Атрибут

Определяет в формате URL-адреса ссылку на XML-файл, определяющий содержание свойства XmlDefinition.

Xsl

Элемент

Необязательный элемент. Содержит строенную таблицу стилей.

XslLink

Элемент

Необязательный элемент. Содержит 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

Инструкции. Настройка визуализации поля в представлении списка

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