Связанный список элементов с

список Вам наверное часто в решениях требовалось сделать возможность связать один элемент с другим. Причем не просто лукап сделать, а так чтобы можно было произвольно выбрать элемент и создать связь с ним.

Копая JSOM, я недавно обнаружил, что в SharePoint 2013 есть такой функционал.

“Изкаропки” он доступен в списке задач. У каждой задачи есть “связанные элементы”.

image

При нажатии на “добавить связанный элемент” появляется стандартный asset picker

image

Можно выбирать любой элемент в пределах коллекции сайтов.

Внутренности “связанных элементов”

“Связанные элементы” это кастомное поле с ID равным значению Microsoft.SharePoint.SPBuiltInFieldId.RelatedItems. Это поле скрытое и добавить его в список из интерфейса не получится. Но в решении вы совершенно спокойно можете добавить это поле в тип контента.

Сам касс поля определен в сборке Microsoft.SharePoint и доступен, в том числе, в Foundation. Для работы с полем доступны только клиентские API, серверный класс для них помечен как internal.

На клиенте можно обращаться с помощью классов SP.RelatedItemManager в sp.js (http://msdn.microsoft.com/en-us/library/jj838582.aspx) и Microsoft.SharePoint.Client.RelatedItemManager в сборке Micrsosoft.SharePoint.Client (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.client.relateditemmanager.aspx).

Если интересна реализация поля, то смотрите с помощью IlSpy класс Microsoft.SharePoint.RelatedItemManager в сборке Microsoft.SharePoint. Рендеринг связанный список элементов с поля описан в файле sp.ui.relateditems.js

Реализация поля предельно простая – в текстовом поле сохраняется сериализованный в json массив элементов Microsoft.SharePoint.RelatedItem. Есть ограничение – не более 9 связанных элементов. Скорее всего оно связано с необходимостью secutrity trimming ссылок на связанные элменты, а это делается крайне медленно в SharePoint. Для security trimming ссылок в ленте новостей используется поиск+кеширование, но функционал “связанных элементов” рассчитан на работу в foundation и не может использовать такие возможности.

Применение

Из-за ограничения количества связанных элементов использовать данную возможность для разработки большой системы не получится. Хотя во многих сценариях данное поле может заменить лукапы. Кроме того API позволит вычислять “транзитивное замыкание” связанных элементов.

Наибольший интерес “связанные элементы” представляют как пример качественно сделанного расширения платформы. Оно включает в себя Custom Field Type с контролом, API на сервере и на клиенте, рендеринг поля в формах и использование asset picker. Если будете делать что-то подобное, то изучите реализацию “связанных элементов”.

  • ← Code Review vs Testing
  • Скрытая стоимость решений на SharePoint →
Стас Выщепан bio photo

Стас Выщепан

Автор, спикер, консультант, основатель и руководитель vnextsoft.

Моя компания

vnextsoft

Подписаться на блог

RSS rss

Другие посты в этой категории


Источник: http://blog.gandjustas.ru/2013/07/25/sharepoint-2013_25/


Рекомендуем посмотреть ещё:


Закрыть ... [X]

Связанные списки в С - Программирование Как сделать объемную звезду из бумаги своими руками поэтапно



Связанный список элементов с Создание отношений списков с помощью
Связанный список элементов с Обсуждение:Связный список Википедия
Связанный список элементов с Связанные списки - С для начинающих
Связанный список элементов с Связанные элементы в SharePoint 2013
Связанный список элементов с Списки в C C
Cached БУ Цивильская ЦРБ Минздрава Чувашии Все рецепты - t Вязание для детей спицами. 700 схем вязания для детей Детское творчество - аппликации, поделки из цветной бумаги Игры для развития речи. Развитие речи у детей

Похожие новости