如何使用REST API ajax按视图名称获取列表项?

问题描述 投票:0回答:1

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

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

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

sharepoint-2013 sharepoint-rest-api
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"
                   }
             });
        }
    

在这里回答了相同的问题:

Using REST to fetch SharePoint View Items

© www.soinside.com 2019 - 2024. All rights reserved.