0

我正在尝试通过 SharePoint REST API 创建一个 SharePoint 列表视图,其中定义了一组列作为视图的一部分。我使用的端点如下:

邮递员 API 请求:

HTTP 方法:POST

网址:https ://tenantname.sharepoint.com/sites/SPSite/_api/web/lists/getbytitle('ListName')/views 标题:

  • '接受' - '应用程序/json;odata=verbose'
  • '内容类型' - '应用程序/json;odata=verbose'

正文(JSON):

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

我收到 JSON 错误,因为此有效负载似乎不正确。需要帮助了解如何通过 SharePoint REST API 创建具有特定字段的视图。

谢谢,是的

4

1 回答 1

1

创建视图时,不支持添加viewFields,需要在创建列表视图后添加。

所以请首先创建这样的视图:

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 在第一个请求中是警报,在第二个请求中使用它。

于 2020-11-25T03:39:02.810 回答