【发布时间】:2019-12-18 20:03:22
【问题描述】:
我有一个动态生成的数组,其中包含不同项目和不同列表的 ID。
我想要什么:
返回我的数组中每个项目的自定义字段。
问题:
在删除项目之前没有问题。然后我会得到以下错误:
项目不存在。它可能已被其他用户删除。
我的想法:
也许有一个简单的选项来检查项目是否存在。带有项目 ID 的数组可能会变大,有超过 200 个不同列表的项目。所以我认为为每一个项目都创建一个 Ajax-Request 并不是一个好主意。没有更好的解决方案吗?
我的代码:
var context = SP.ClientContext.get_current();
for(var i in items){
var web = context.get_web(items[i]['webId']);
var list = web.get_lists().getById(items[i]['listId']);
var item = list.getItemById(items[i]['itemId']);
for(var j in columns){
if(columns[j].getToLoad('web').length > 0){
for(var k in columns[j].getToLoad('web')){
context.load(web, columns[j].getToLoad('web')[k]);
}
}
if(columns[j].getToLoad('list').length > 0){
for(var k in columns[j].getToLoad('list')){
context.load(list, columns[j].getToLoad('list')[k]);
}
}
if(columns[j].getToLoad('item').length > 0){
for(var k in columns[j].getToLoad('item')){
context.load(item, columns[j].getToLoad('item')[k]);
}
}
}
}
context.executeQueryAsync(
buildTable.bind(this, items),
function(a, b){
console.error('ERROR: ' + b.get_message());
}
);
【问题讨论】:
-
对我来说最好的解决方案是简单地忽略不存在的项目。
-
你是如何使用这个脚本的?我知道您正在根据列表构建一些东西......但是在此之后您将如何处理这些信息?我的主要困惑是您的代码如何知道再次运行或在此代码第一次运行后删除了某个项目?
-
简而言之,我在 Sharepoint 中构建了自己的表,其中包含不同列表的项目。我有一个数组,其中包含 web-ID、list-ID 和 item-ID。我从本地存储加载这个数组。首先,我加载网络和连接到网络的所需字段。其次,我加载列表和连接到列表的所需字段。最后我加载项目和连接到项目的所需字段。最后我执行 executeQueryAsync 来执行查询。它真的像一个魅力 - 直到从共享点删除一个项目,但不是从我的本地存储中的数组中删除。
-
buildTable 函数中没有出现该错误。它出现在以下行:console.error('ERROR: ' + b.get_message());
标签: javascript sharepoint sharepoint-2016 sharepoint-jsom