【发布时间】:2019-02-28 17:35:50
【问题描述】:
我正在尝试根据“标题”(而不是 ID)更新我的 SharePoint 列表项。我为此目的使用 Caml Query。下面是代码,它不起作用。请帮忙。
function updateTowerStatus(title, tower, status, comments)
{
var targetSiteUrl = "https://office2.bt.com/sites/GBA-"+tower;
var targetProductListName = tower+"Products";
ClientContext = new SP.ClientContext(targetSiteUrl);
var oList = ClientContext.get_web().get_lists().getByTitle(targetProductListName);
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name="Title"/><Value Type="Text">'+title+'</Value></Eq></Where></Query></View>');
this.collListItem = oList.getItems(camlQuery);
ClientContext.load(oList);
ClientContext.load(collListItem);
ClientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed);
}
function onQuerySucceeded() {
var listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext())
{
var item = listItemEnumerator.get_current();
item.set_item(tower+'ApprovalStatusOpenreach', status);
item.set_item(tower+'CommentsOpenreach', comments);
item.update();
ClientContext.load(item);
ClientContext.executeQueryAsync(Function.createDelegate(this, this.onUpdateSucceeded), Function.createDelegate(this, this.onQueryFailed));
}
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
也欢迎任何其他替代解决方案来完成这项工作。 场景是,当另一个列表中具有相同标题的项目被批准/拒绝时,我需要更新一个列表的状态。我可以保存 ID 并执行此操作。但是我将如何存储正在创建的项目的 ID?
【问题讨论】:
-
让我知道它是否有效?
-
我使用 api 调用来做到这一点。
标签: sharepoint sharepoint-2013