Sharepoint 2013添加查找值到列表从另一个列表Javascript

Sharepoint 2013 Add lookup value to list from another list Javascript

本文关键字:列表 另一个 Javascript 2013 添加 查找 Sharepoint      更新时间:2023-09-26

我试图只是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());
}

问题是,我得到一个错误"你正在尝试更新的字段可能只读",当我试图运行这段代码,我需要从查找列表而不是查找值中获取ID,是否有一种方法从列表中获取ID,只是查找值?

一种解决方案可能是从查找表中获取所有值(在本例中为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

注:为了获得确切的项目,编写一个CAML来获取所需的项目,然后获取Id。

相关文章: