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

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


person three7studio    schedule 24.01.2017    source источник


Ответы (2)


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

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

person AndreyBizin    schedule 25.01.2017

Другое решение — написать собственный код для обновления всех ваших страниц. На этой странице Тобиас Циммергрен показывает код, обновляющий 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 веб-части, которое вы хотите обновить.
person Alt-WN    schedule 22.09.2017