пятница, 7 октября 2011 г.

SharePoint и XSLT: Почему XSLT - это важно?

Начинаю серию статей по XSLT в SharePoint.

XSLT в SharePoint - чрезвычайно мощный инструмент, глубоко интегрированный в систему. Даже в предыдущей, 2007й версии, роль XSLT была довольно велика - преобразования использовались при отображении результатов поиска (CoreResultsWebPart), а также для кастомизаций отображения представлений и форм списков (DataViewWebPart и DataFormWebPart).

В 2010м SharePoint'е XSL-преобразования используются еще более интенсивно. Отображение представлений всех стандартных списков, кроме календарей, осуществляется теперь именно через XSLT (XsltListViewWebPart). Формы внешних списков также отображаются через XSLT (XlstListFormWebPart), так что тенденция видна невооруженным взглядом: поскольку данные в SharePoint представляются в виде списков, на которые завязано всё, то можно смело сказать:
Практически всё отображение данных в SharePoint'e осуществляется с помощью XSLT

В свете этой аксиомы, становится понятно, что для дизайнеров SharePoint, знание XSLT незаменимо. Иначе они не смогут ни поменять отображение различных стандартных типов полей в списках, ни сделать редизайн самого списка, ни переделать рендеринг списка с таблиц на div'ы - а я знаю, сделать это им очень хочется :)

Не менее важно знание XSLT и для других людей, работающих с SharePoint - программистов, IT Pro, администраторов. Именно через XSLT можно реализовать KPI-светофоры и эффект красного глаза, сгруппировать вместе несколько полей при отображении, переделать пейджинг на более приличный вариант, удалить или изменить ненравящуюся многим ссылку "Добавить новую запись", изменить поведение и внешний вид группировки, и т.д.

К примеру, мне удалось реализовать такую интереснейшую штуку, как иерархическое представление списка:



На создание этого представления ушло всего лишь около 3 дней работы. При этом, решение вполне универсальное, т.е. если в вашем списке есть Lookup-колонка, указывающая на этот же список - значит, ему можно за 2 минуты добавить иерархическое представление.

С учетом того, что измененный список по-прежнему поддерживает все стандартные возможности - добавление колонок, сортировку и фильтрацию, соединения с другими веб-частями и т.д. - представьте сами, сколько бы вы писали такое же отображение, используя самописную веб-часть?:)

Представление списка можно изменять очень сильно. Например, мне удалось добиться вот такого результата при отображении стандартного списка "Контакты", в который я добавил несколько дополнительных колонок стандартных типов:


Особенности этого представления:
  1. Часть полей являются как бы служебными, и отображаются уникально - это ФИО и аватар (стандартная колонка типа Hyperlink or picture). Эффект мокрого пола для аватара реализован с помощью библиотеки reflection.js.
  2. Присутствует индикатор дней рождения. Этот индикатор, кстати говоря, полностью работоспособен и не зависит от вычисляемых колонок (с которыми бывают проблемы, т.к. на самом деле они обновляются только при изменении записи или колонки). За какое количество дней предупреждать о дне рождения - может быть задано специальной настройкой, передаваемой в качестве параметра через расширение ParameterBindings. С помощью другой подобной настройки можно задать отображение юбилеев - при этом стиль индикатора изменится.
  3. Основная часть добавляемых полей отображается снизу от индикатора дня рождения (или от ФИО, если индикатор отсутствует). При этом, отображением разных типов полей занимается SharePoint. Т.е., например, если вы добавите в представление Lookup-колонку, она отобразиться в виде ссылки, и т.д.
  4. Справа от ФИО расположена дополнительная панель для контактных данных. Это обычные поля, имеющие тип Single line of text или Hyperlink or picture - и их особое отображение реализовано с помощью метаданных SPField, которые в XSLT передаются опять же, с помощью ParameterBindings.
  5. Представление полностью локализовано.
  6. Представление поддерживает все стандартные возможности - группировку, сортировку, фильтрацию, соединение с другими веб-частями, выделение одного и нескольких элементов, контекстный Ribbon, и т.д.
  7. Объем кода XSLT - всего 350 строк. Причем большая часть кода - это стандартные шаблоны, скопированные из OOTB файлов.
Как видите, использование XSLT-подхода при изменении отображения данных предоставляет довольно широкие возможности, гибкость и глубокую интеграцию в SharePoint.

В следующей статье серии, вы узнаете о том, как начать работать c XSLT: где подсмотреть примеры кода, как заставить представление вашего списка использовать этот код, как выглядит дерево шаблонов веб-части XsltListViewWebPart, откуда брать начальную версию версию этих шаблонов, - а также множество нюансов и тонкостей.

5 комментариев:

  1. Здравствуйте! Не могли бы Вы поделиться примером организации иерархического представления списка?

    ОтветитьУдалить
  2. Здравствуйте! Не могли бы Вы поделиться примером?

    ОтветитьУдалить
  3. Ответы
    1. примеров вагон в следующих статьях серии

      Удалить

Внимание! Реклама и прочий спам будут беспощадно удаляться.