admin管理员组文章数量:1432169
I have a Contacts list which has a multi-value lookup field called ContactType. The result of a CAML query will show the following value for ContactType for one of the list items:
1;#Applicant;#2;#Employee
I had a look at Fiddler after executing a CSOM query against the multi-value lookup field and noticed that the SP.FieldLookupValue object has two properties with the values:
$1E_1 : 1
$2e_1 : "Applicant"
However when you save a value you can only set the lookupId which is 1 in this case. There is no method to set up the value as in lookup.set_lookupValue().
I am attempting to copy the contents of ContactType into a new list item of Contacts. Unfortunately I have no success when updating the ContactType field. This is what I've tried so far:
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Contacts');
var itemCreateInfo = new SP.ListItemCreationInformation();
var oListItem = oList.addItem(itemCreateInfo);
var contactTypes = new Array();
$.each(contact.contactTypes, function (index, contactType) {
var lookup = new SP.FieldLookupValue();
lookup.set_lookupId(contactType.id);
contactTypes.push(lookup);
});
// other set_item statements skipped for brevity
oListItem.set_item('ContactType', contactTypes);
oListItem.update();
The error message is:
Invalid lookup value. A lookup field contains invalid data.
I also experimented with the following code without any success:
lookup.set_lookupId(contactType.id + ";#" + contactType.title);
In this case the error message is:
The input string is not in the correct format.
If I update a single lookup I have no problems but the issue lies in the saving of the array of lookups. For example, the following code works fine:
var lookup = new SP.FieldLookupValue();
lookup.set_lookupId(1);
contactTypes.push(lookup);
oListItem.set_item('ContactType', lookup);
but it doesn't play ball when attempting to save the array of lookups as in
oListItem.set_item('ContactType', contactTypes);
Any ideas?
I have a Contacts list which has a multi-value lookup field called ContactType. The result of a CAML query will show the following value for ContactType for one of the list items:
1;#Applicant;#2;#Employee
I had a look at Fiddler after executing a CSOM query against the multi-value lookup field and noticed that the SP.FieldLookupValue object has two properties with the values:
$1E_1 : 1
$2e_1 : "Applicant"
However when you save a value you can only set the lookupId which is 1 in this case. There is no method to set up the value as in lookup.set_lookupValue().
I am attempting to copy the contents of ContactType into a new list item of Contacts. Unfortunately I have no success when updating the ContactType field. This is what I've tried so far:
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Contacts');
var itemCreateInfo = new SP.ListItemCreationInformation();
var oListItem = oList.addItem(itemCreateInfo);
var contactTypes = new Array();
$.each(contact.contactTypes, function (index, contactType) {
var lookup = new SP.FieldLookupValue();
lookup.set_lookupId(contactType.id);
contactTypes.push(lookup);
});
// other set_item statements skipped for brevity
oListItem.set_item('ContactType', contactTypes);
oListItem.update();
The error message is:
Invalid lookup value. A lookup field contains invalid data.
I also experimented with the following code without any success:
lookup.set_lookupId(contactType.id + ";#" + contactType.title);
In this case the error message is:
The input string is not in the correct format.
If I update a single lookup I have no problems but the issue lies in the saving of the array of lookups. For example, the following code works fine:
var lookup = new SP.FieldLookupValue();
lookup.set_lookupId(1);
contactTypes.push(lookup);
oListItem.set_item('ContactType', lookup);
but it doesn't play ball when attempting to save the array of lookups as in
oListItem.set_item('ContactType', contactTypes);
Any ideas?
Share Improve this question edited Sep 18, 2015 at 3:40 user1309226 asked Sep 17, 2015 at 3:46 user1309226user1309226 7592 gold badges11 silver badges34 bronze badges1 Answer
Reset to default 4Don't build array of SP.FieldLookupValue, instead save multiple contact types to string.
var clientContext = new SP.ClientContext.get_current(); //if the page and the list are in same site.If list is in different site then use relative url instead of get_current
var oList = clientContext.get_web().get_lists().getByTitle('Contacts');
var itemCreateInfo = new SP.ListItemCreationInformation();
var oListItem = oList.addItem(itemCreateInfo);
var contactTypes = null;
$.each(contact.contactTypes, function (index, contactType) {
if (index != 0)
contactTypes += ';#' + contactType.id + ';#' + contactType.title;
else
contactTypes = contactType.id + ';#' + contactType.title;
});
// other set_item statements omitted for brevity
oListItem.set_item('ContactType', contactTypes);
oListItem.update();
clientContext.executeQueryAsync(
// success return
function () {
var success = true;
},
// failure return
function (sender, args) {
window.alert('Request to create contact failed. ' + args.get_message() +
'\n' + args.get_stackTrace());
})
本文标签: SharePoint 2013 How to update multivalue lookup field using JavaScript CSOMStack Overflow
版权声明:本文标题:SharePoint 2013: How to update multi-value lookup field using JavaScript CSOM - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745589836a2665130.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论