SharePoint онлайн - как включить jslink по умолчанию для всех списков?

Кто-нибудь нашел способ автоматического добавления URL-адреса jslink в списки по умолчанию вместо необходимости вручную добавлять URL-адрес в каждый список при их создании? В конечном итоге мы хотели бы иметь jslink по умолчанию для каждого типа приложений, к которым имеют доступ редакторы.

2 ответа

Да, Крис О'Брайен прекрасно описал это здесь: http://www.sharepointnutsandbolts.com/2013/01/using-jslink-to-change-ui-of-sharepoint_20.html

Короткая история - вы должны создать шаблон списка и определить там jslink, чтобы все списки, основанные на этом шаблоне, имели бы ссылку js. Если вы по какой-либо причине не хотите связывать списки с шаблонами, вам следует изучить получатели событий. (для Списка созданных событий.)

Другое решение - написать собственный код для обновления всех ваших страниц. На этой странице Тобиас Циммергрен показывает код обновления JSLink с помощью PowerShell: PowerShell: настройка свойства JSLink веб-части

Я лично использую C# CSOM для обновления JSLink на всех запрашиваемых страницах. Вот пример кода, который обновляет JSLink на одной странице (для простоты я убрал обработку исключений и всю логику не-счастливого пути):

using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.WebParts;

void UpdateWebPart(ClientContext webpartContext, string RelativeUrl, string JSLink)
{
    File page = webpartContext.Web.GetFileByServerRelativeUrl(RelativeUrl);
    LimitedWebPartManager wpm = page.GetLimitedWebPartManager(PersonalizationScope.Shared);
    webpartContext.Load(page);
    webpartContext.Load(wpm.WebParts, wps => wps.Include(w => w.WebPart.Title, w => w.WebPart.Properties));
    webpartContext.ExecuteQuery();
    if (wpm.WebParts.Count > 0)
    {
        // You can find your WebPart inside wpm.WebParts e.g. by Title. On each page I have only 1 WebPart, so I just take the first.
        WebPartDefinition wpd = wpm.WebParts[0];
        WebPart myWP = wpd.WebPart;
        if ((string)myWP.Properties["JSLink"] != JSLink)
        {
            myWP.Properties["JSLink"] = JSLink;
            wpd.SaveWebPartChanges();
            webpartContext.ExecuteQuery();
        }
    }
}
  • webpartContext - это SharePoint ClientContext, созданный ранее.
  • RelativeUrl выглядит примерно так: "/Lists/Sample%20Tasks/AllItems.aspx"
  • JSLink - это новое значение для JSLink WebPart, которое вы хотите обновить
Другие вопросы по тегам