Sharepoint 2013将查找值添加到另一个列表中的列表Javascript

时间:2014-07-08 15:11:19

标签: javascript sharepoint csom

我尝试使用Javascript在SharePoint 2013中使用以下代码添加列表项;

function createListItem(var lookup_Value) {

var clientContext = new SP.ClientContext.get_current();

var oList = clientContext.get_web().get_lists().getByTitle('CrewNoticesAudit');

var itemCreateInfo = new SP.ListItemCreationInformation();
this.oListItem = oList.addItem(itemCreateInfo);

oListItem.set_item('Title', 'My New Item!');
oListItem.set_item('NoticeId', lookup_Value);  // THIS IS A LOOKUP VALUE
oListItem.set_item('User', 'administrator');
oListItem.set_item('TimeStamp', new Date());
oListItem.set_item('AuditType', 'Open');

oListItem.update();

clientContext.load(oListItem);

clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), 
Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {
alert('Item created: ' + oListItem.get_id());
}

function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

问题是我收到一个错误"您尝试更新的字段可能只读#34;当我尝试运行此代码时,我需要从查找列表而不是查找值中获取ID,是否有办法从列表中获取具有查找值的ID?

1 个答案:

答案 0 :(得分:0)

解决方案可以是从查找表中获取所有值(在本例中为allItems),并将它们与所需的valuecomparisonItemName()进行比较,然后获取id。如果查找表很小,这不应该花费很长时间。

 var lookupVar = new SP.FieldLookupValue();    
  for (var i = 0; i < allItems.length; i++) {
        if (allItems[i].get_item("ItemName") == comparisonItemName) {
            lookupVar.set_lookupId(allItems[i].get_id());
        }
    }

在设置项目的值时使用lookupVar。

P.S。为了得到确切的项目,写一个CAML来获得所需的项目,然后获得Id。