Настройка представления списка в надстройках SharePoint с использованием технологии клиентской обработки

Технология клиентской обработки в SharePoint позволяет создавать собственные выходные данные для набора элементов управления, размещенных на странице SharePoint. Благодаря этому можно использовать хорошо известные технологии, например HTML и JavaScript, для задания логики отрисовки представлений списков в SharePoint. Технология клиентской обработки дает возможность указывать собственные ресурсы JavaScript и размещать их в хранилищах данных, доступных ваших надстроек (например, в библиотеке документов). Надстройка с размещением в SharePoint включает только компоненты SharePoint. Ее ресурсы размещаются на изолированном дочернем сайте хост-сайта, который называется сайтом надстройки.

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

Для выполнения действий, описанных в этом примере, вам потребуется следующее:

Инструкции по настройке подходящей среды разработки см. в статье Два типа надстроек SharePoint (с размещением в SharePoint и у поставщика).

Основные понятия, связанные с настройкой представления списка с использованием технологии клиентской обработки

В приведенной ниже таблице перечислены полезные статьи, в которых описаны понятия, связанные с настройкой представления списка.

Название статьи Описание
Надстройки SharePoint Изучите новую модель надстроек в Microsoft SharePoint, с помощью которой можно создавать небольшие и удобные в использовании надстройки для пользователей.
Разработка пользовательского интерфейса для надстроек SharePoint Изучите различные варианты пользовательского интерфейса, доступные при создании надстроек SharePoint.
Хост-сайты, сайты надстроек и компоненты SharePoint в SharePoint Узнайте, в чем разница между хост-сайтами и сайтами надстроек. Узнайте, какие компоненты SharePoint можно включить в Надстройка SharePoint, какие компоненты можно развернуть на хост-сайтах, а какие на сайтах надстроек, а также узнайте, как развертывать сайты надстроек в изолированном домене.

Пример кода: настройка представления списка с использованием технологии клиентской обработки

Чтобы настроить представление списка, развернутое на сайте надстройки, используя технологию клиентской обработки, выполните указанные ниже действия.

  1. Создайте проект надстройки SharePoint.

  2. Создайте новое определение списка с настраиваемым представлением.

  3. Укажите особую логику обработки в файле JavaScript.

Ниже показано представление списка объявлений, отрисованное с помощью технологии клиентской обработки.

Особое представление списка объявлений

Особое представление списка объявлений

Создание проекта надстройки SharePoint

  1. Откройте Visual Studio 2015 от имени администратора. Для этого щелкните правой кнопкой мыши значок Visual Studio в меню Пуск и выберите Запуск от имени администратора.

  2. Создайте новый проект с помощью шаблона Надстройка SharePoint.

    Ниже показано расположение шаблона Надстройка SharePoint в Visual Studio 2015: Шаблоны>Visual C#>Office/SharePoint>Надстройки Office.

    Шаблон Visual Studio "Надстройка SharePoint"

    Шаблон Visual Studio

  3. Укажите URL-адрес веб-сайта SharePoint, который планируется использовать для отладки.

  4. Выберите SharePoint-hosted (Размещение в SharePoint) в качестве варианта размещения надстройки.

Создание определения списка

  1. Щелкните правой кнопкой мыши проект надстройки для SharePoint и добавьте новый элемент List. Создайте настраиваемый список на основе объявлений.

  2. Скопируйте следующую разметку и вставьте ее в элемент Views файла Schema.xml вашего компонента списка. Эта разметка выполняет следующие задачи.

    • Объявляет новое представление с именем Overridable и атрибутом BaseViewID=2.

    • Предоставляет значение для элемента JSLink, которое указывает на файл JavaScript с надстройкой.

    Примечание.

    Свойство JSLink не поддерживается в списках Survey или Events. Календарь SharePoint представляет собой список Events.

    <View BaseViewID="2" 
        Name="8d2719f3-c3c3-415b-989d-33840d8e2ddb" 
        DisplayName="Overridable" 
        Type="HTML" 
        WebPartZoneID="Main" 
        SetupPath="pages\viewpage.aspx" 
        Url="Overridable.aspx"
        DefaultView="TRUE">
    <ViewFields>
        <FieldRef Name="Title" />
    </ViewFields>
    <Query />
    <Toolbar Type="Standard" />
    <XslLink>main.xsl</XslLink>
    <JSLink Default="TRUE">~site/Scripts/CSRListView.js</JSLink>
    </View>
    

Указание особой логики отрисовки в файле JavaScript

  1. Щелкните правой кнопкой мыши папку Scripts и добавьте новый файл JavaScript. Назовите его CSRListView.js.

  2. Скопируйте следующий код и вставьте его в файл CSRListView.js. Этот код выполняет следующие задачи.

    • Предоставляет обработчики событий для событий PreRender и PostRender.

    • Предоставляет шаблоны для наборов шаблонов Header, Footer и Item.

    • Регистрирует шаблоны.

    
    (function () {
        // Initialize the variable that stores the objects.
        var overrideCtx = {};
        overrideCtx.Templates = {};
    
        // Assign functions or plain html strings to the templateset objects:
        // header, footer and item.
        overrideCtx.Templates.Header = "<B><#=ctx.ListTitle#></B>" +
            "<hr><ul id='unorderedlist'>";
    
        // This template is assigned to the CustomItem function.
        overrideCtx.Templates.Item = customItem;
        overrideCtx.Templates.Footer = "</ul>";
    
        // Set the template to the:
        //  Custom list definition ID
        //  Base view ID
        overrideCtx.BaseViewID = 2;
        overrideCtx.ListTemplateType = 10057;
    
        // Assign a function to handle the
        // PreRender and PostRender events
        overrideCtx.OnPreRender = preRenderHandler;
        overrideCtx.OnPostRender = postRenderHandler;
    
        // Register the template overrides.
        SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
    })();
    
    // This function builds the output for the item template.
    // It uses the context object to access announcement data.
    function customItem(ctx) {
    
        // Build a listitem entry for every announcement in the list.
        var ret = "<li>" + ctx.CurrentItem.Title + "</li>";
        return ret;
    }
    
    // The preRenderHandler attends the OnPreRender event
    function preRenderHandler(ctx) {
    
        // Override the default title with user input.
        ctx.ListTitle = prompt("Type a title", ctx.ListTitle);
    }
    
    // The postRenderHandler attends the OnPostRender event
    function postRenderHandler(ctx) {
    
        // You can manipulate the DOM in the postRender event
        var ulObj;
        var i, j;
    
        ulObj = document.getElementById("unorderedlist");
    
        // Reverse order the list.
        for (i = 1; i < ulObj.children.length; i++) {
            var x = ulObj.children[i];
            for (j = 1; j < ulObj.children.length; j++) {
                var y = ulObj.children[j];
                if(x.innerText<y.innerText){                  
                    ulObj.insertBefore(y, x);
                }
            }
        }
    }
    

Сборка и запуск решения

  1. Нажмите клавишу F5.

    Примечание.

    При нажатии клавиши F5 Visual Studio выполняет сборку решения, развертывает надстройку и открывает страницу разрешений.

  2. Нажмите кнопку Доверять.

  3. Перейдите к пользовательскому списку, введя адрес /Lists/<your_list_instance> относительно каталога надстройки в веб-домене надстройки (а не хост-домене). Добавьте одно или несколько объявлений. На ленте выберите представление Переопределяемый.

См. также