通过Caml Query更新SharePoint列表项(使用项目标题)-不起作用-均无错误

时间:2019-02-28 17:35:51

标签: sharepoint sharepoint-2013

我正在尝试基于“标题”(不是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?

1 个答案:

答案 0 :(得分:0)

变量塔在onQuerySucceeded()方法中不可访问。它是updateTowerStatus()的一部分