sharepoint - 通过 Caml 查询更新 SharePoint 列表项(使用项目标题) - 不工作 - 也没有错误
问题描述
我正在尝试根据“标题”(而不是 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?
解决方案
在 onQuerySucceeded() 方法中无法访问变量 tower。它是 updateTowerStatus() 的一部分
推荐阅读
- reactjs - 为 React-Native 代码隐藏 Visual Studio 代码终端中的所有警告
- angular - Angular:如何在 2 个不同的选项卡中同时调用一个函数
- angular - 使用 angular pwa 在应用程序加载时仅显示一次启动画面
- ios - SKProductsRequest 不返回针对自动更新订阅的国家/地区特定价格
- android - 使用单独的 backstack 创建类似底部导航的 Instagram
- reactjs - Rollup EMFILE:打开的文件太多,带有 material-ui 图标
- java - 如何卸载 Nitgen eNBSP SDK 库 dll
- azure - 美国号码的呼叫转移
- json - 将多个以换行符分隔的 JSON 文件的文件夹连接到单个文件中
- java - 如何从字符串(月份和年份)获取下个月和上个月