我有一个SharePoint网站,我想使用JSOM获取所有列表,并获取每个列表中的所有项目。
我尝试过这种方法: 获取站点中的所有列表,存储其ID 对于每个列表ID,获取列表项
伪代码是这样的:
for each id in listOfIds(){
executeQueryAsync( context with list ID passed in )
}
然而,这种方法对我来说是个问题 - executeQueryAsync只接受listOfIds中的最后一个ID,大概是因为for循环迭代太快了。
我在SharePoint网站中获取所有列表并获取每个列表的所有项目的最佳方法是什么?我只能使用JSOM。
答案 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"}, ...]},...]
答案 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());
}