Какая полезная нагрузка должна быть отправлена для параметра «ViewFields» как часть использования SPO REST API?

#sharepoint #sharepoint-online #spview

#sharepoint #sharepoint-online #spview

Вопрос:

Я пытаюсь создать представление списка SharePoint через SharePoint REST API с определенным набором столбцов, которые будут частью представления. Конечная точка, которую я использую, приведена ниже:

Запрос API POSTMAN:

МЕТОД HTTP: POST

URL: https://tenantname.sharepoint.com/sites/SPSite/_api/web/lists/getbytitle (‘ListName’) / просмотр заголовков:

  • ‘Accept’ — ‘application / json;odata =подробный’
  • ‘Content-Type’ — ‘application / json;odata =подробный’

Тело (JSON):

 {
"__metadata":{
    "type":"SP.View"
},
"Title":"TestView",
"ViewFields":["Title","Name"]
}
 

Я получаю ошибку JSON, поскольку эта полезная нагрузка кажется неправильной. Нужна помощь в понимании того, как создать представление с определенными полями через SharePoint REST API.

Спасибо, Да

Ответ №1:

При создании представления добавление полей просмотра не поддерживается, это необходимо сделать после создания представления списка.

Поэтому, пожалуйста, сначала создайте представление, подобное этому:

 var viewQuery = "<OrderBy><FieldRef Name="ID" /></OrderBy>";
 
    $.ajax
        ({
            // _spPageContextInfo.webAbsoluteUrl - will give absolute URL of the site where you are running the code.
            // You can replace this with other site URL where you want to apply the function
 
            url: _spPageContextInfo.webAbsoluteUrl   "/_api/web/lists/getByTitle('MyList')/views",
            type: "POST",
 
            data: "{'__metadata':{'type': 'SP.View'},'ViewType': 'HTML','Title':'New View Created From REST','PersonalView':false,'ViewQuery':'"   viewQuery   "'}",
            headers:
               {
                   // Accept header: Specifies the format for response data from the server.
                   "Accept": "application/json;odata=verbose",
                   //Content-Type header: Specifies the format of the data that the client is sending to the server
                   "Content-Type": "application/json;odata=verbose",
                   // X-RequestDigest header: When you send a POST request, it must include the form digest value in X-RequestDigest header
                   "X-RequestDigest": $("#__REQUESTDIGEST").val()
               },
            success: function (data, status, xhr) {
                alert(data.d.Id);
            },
            error: function (xhr, status, error) {
                console.log("Failed");
            }
        });
 

Затем установите Viewfield для нового созданного представления списка следующим образом:

  $.ajax
        ({
            // _spPageContextInfo.webAbsoluteUrl - will give absolute URL of the site where you are running the code.
            // You can replace this with other site URL where you want to apply the function
 
            url: _spPageContextInfo.webAbsoluteUrl   "/_api/web/lists/getByTitle('MyList')/Views(guid'58cfaaa2-107c-4a94-8490-38d1df195e5b')/ViewFields/addviewfield('Created')",
            type: "POST",
            headers:
               {
                   // Accept header: Specifies the format for response data from the server.
                   "Accept": "application/json;odata=verbose",
                   //Content-Type header: Specifies the format of the data that the client is sending to the server
                   "Content-Type": "application/json;odata=verbose",
                   // X-RequestDigest header: When you send a POST request, it must include the form digest value in X-RequestDigest header
                   "X-RequestDigest": $("#__REQUESTDIGEST").val()
               },
            success: function (data, status, xhr) {
                console.log("Success");
            },
            error: function (xhr, status, error) {
                console.log("Failed");
            }
        });
 

Итак, приведенный выше пример добавляет поле «Создано» в ViewFields, и View Guid предупреждается при первом повторном запросе, используйте его во втором запросе.

Комментарии:

1. Спасибо за ответ. Итак, если у меня есть коллекция из 5 полей, которые нужно добавить в представление, означает ли это, что я должен перебирать коллекцию и добавлять по одному полю за раз в представление?

2. Да, для добавления полей просмотра во втором запросе одновременно может быть передано только одно имя поля, вы можете создать массив полей и взаимодействовать, чтобы добавить больше полей.

3. Понял! Спасибо, что разъяснили это. Это помогает.