У меня есть список контактов, в котором есть поле поиска с несколькими значениями, называемое ContactType. Результат запроса CAML покажет следующее значение ContactType для одного из элементов списка:
1;#Applicant;#2;#Employee
Я взглянул на Fiddler после выполнения запроса CSOM к полю поиска с несколькими значениями и заметил, что объект SP.FieldLookupValue имеет два свойства со значениями:
$1E_1 : 1
$2e_1 : "Applicant"
Однако, когда вы сохраняете значение, вы можете установить только lookupId, который в данном случае равен 1. Нет способа установить значение, как в lookup.set_lookupValue().
Я пытаюсь скопировать содержимое ContactType в новый элемент списка контактов. К сожалению, мне не удалось обновить поле ContactType. Это то, что я пробовал до сих пор:
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();
Сообщение об ошибке:
Invalid lookup value. A lookup field contains invalid data.
Я также безуспешно экспериментировал со следующим кодом:
lookup.set_lookupId(contactType.id + ";#" + contactType.title);
В этом случае сообщение об ошибке:
The input string is not in the correct format.
Если я обновляю один поиск, у меня нет проблем, но проблема заключается в сохранении массива поисков. Например, следующий код работает нормально:
var lookup = new SP.FieldLookupValue();
lookup.set_lookupId(1);
contactTypes.push(lookup);
oListItem.set_item('ContactType', lookup);
но он не играет в мяч при попытке сохранить массив поисковых запросов, как в
oListItem.set_item('ContactType', contactTypes);
Любые идеи?