使用JSOM获取SharePoint站点中的所有列表和列表项

时间:2018-01-04 10:32:14

标签: jquery sharepoint sharepoint-jsom

我有一个SharePoint网站,我想使用JSOM获取所有列表,并获取每个列表中的所有项目。

我尝试过这种方法: 获取站点中的所有列表,存储其ID 对于每个列表ID,获取列表项

伪代码是这样的:

for each id in listOfIds(){
     executeQueryAsync( context with list ID passed in )
}

然而,这种方法对我来说是个问题 - executeQueryAsync只接受listOfIds中的最后一个ID,大概是因为for循环迭代太快了。

我在SharePoint网站中获取所有列表并获取每个列表的所有项目的最佳方法是什么?我只能使用JSOM。

2 个答案:

答案 0 :(得分:1)

对于那种情况:

  

使用JSOM获取所有列表,并获取每个列表中的所有项目

以下示例演示了如何完成它:

var result = []; 
var ctx = SP.ClientContext.get_current();
var lists = ctx.get_web().get_lists();
ctx.load(lists,"Include(Id,Title)");

ctx.executeQueryAsync(
  function() {

       lists.get_data().forEach(function(list){
           var items = list.getItems(SP.CamlQuery.createAllItemsQuery());
           ctx.load(items,"Include(Id,FileRef)");
           var listEntry = {
             id: list.get_id().toString(),
             title: list.get_title()
           }
           result.push({list: listEntry,
                        items: items}); 
       });
       ctx.executeQueryAsync(
       function() {
           //transform listitem properties
           result.forEach(function(item){

               item.items = item.items.get_data().map(function(listItem){
                    return listItem.get_fieldValues(); 
               });
           }); 

           console.log(JSON.stringify(result));
       },logError); 


  },logError);

,其中

function logError(sender,args){
   console.log(args.get_message());
}

注意:

  • 结果存储在result数组中,该数组具有以下内容 格式:[{list : { id: "1d9b9c27-2b2f-4758-bd7e-f0e4977aa13d", title: "Documents", items: [{ id: "1d9b9c27-2b2f-4758-bd7e-f0e4977aa13d"}, ...]},...]
  • 检索单个请求中每个列表的列表项 Request Batching feature已被使用

答案 1 :(得分:0)

你可以用这个来实现它:

var siteUrl =' / sites / MySiteCollection';

function retrieveAllListProperties() {

var clientContext = new SP.ClientContext(siteUrl);
var oWebsite = clientContext.get_web();
this.collList = oWebsite.get_lists();

clientContext.load(collList);

clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

var listInfo = '';

var listEnumerator = collList.getEnumerator();

while (listEnumerator.moveNext()) {
    var oList = listEnumerator.get_current();
    listInfo += 'Title: ' + oList.get_title() + ' Created: ' + oList.get_created().toString() + '\n';
}
alert(listInfo);
}

  function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}