0

我试图通过视图名称从 Sharepoint 库中获取项目列表。我有ajax rest API URL:

url: webapp + "_api/web/list/getbytitle" + "('" + LibraryName + "')/View/getbytitle" +"('" + viewName + "')"
method:"GET"
header:"Accept":"application/json;odata=verbose

如何获取视图名称中的所有项目?

4

1 回答 1

0

请参考以下代码片段以从特定视图获取项目,Rest API 不是提供者项目端点直接从视图返回。因此,请执行以下操作:

  1. 使用 SP.View.viewQuery 属性执行第一个请求以获取列表视图的 CAML 查询
  2. 通过指定 CAML 查询执行第二个请求以检索列表项:

        getListItemsForView(_spPageContextInfo.webAbsoluteUrl,'MyList12','View1')
        .done(function(data)
        {
             var items = data.d.results;
             for(var i = 0; i < items.length;i++) {
                 console.log(items[i].Title);
             }    
        })
        .fail(
        function(error){
            console.log(JSON.stringify(error));
        });
    
    
    
     function getListItemsForView(webUrl,listTitle,viewTitle)
        {
             var viewQueryUrl = webUrl + "/_api/web/lists/getByTitle('" + listTitle + "')/Views/getbytitle('" + viewTitle + "')/ViewQuery";
             return getJson(viewQueryUrl).then(
                 function(data){         
                     var viewQuery = data.d.ViewQuery;
                     return getListItems(webUrl,listTitle,viewQuery); 
                 });
        }
    
        function getJson(url) 
        {
            return $.ajax({       
               url: url,   
               type: "GET",  
               contentType: "application/json;odata=verbose",
               headers: { 
                  "Accept": "application/json;odata=verbose"
               }
            });
        }
    
    
    
     function getListItems(webUrl,listTitle, queryText) 
        {
            var viewXml = '<View><Query>' + queryText + '</Query></View>';
            var url = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/getitems"; 
            var queryPayload = {  
                       'query' : {
                              '__metadata': { 'type': 'SP.CamlQuery' }, 
                              'ViewXml' : viewXml  
                       }
            };
    
            return $.ajax({
                   url: url,
                   method: "POST",
                   data: JSON.stringify(queryPayload),
                   headers: {
                      "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                      "Accept": "application/json; odata=verbose",
                      "content-type": "application/json; odata=verbose"
                   }
             });
        }
    

同样的问题已在此处得到解答:

使用 REST 获取 SharePoint 视图项

于 2019-11-21T08:19:24.300 回答