0

Im пытается обновить SP.Listitem, утаскивая spUser другим пользователем с использованием JSOM. См codesnippet сильфонныеОбновление SP.ListItem с SP.Field Значение от SP.PeoplePicker

// Query the picker for user information. 
$.fn.getUserInfo2 = function() { 
    var eleId = $(this).attr('id'); 
    var siteUrl = _spPageContextInfo.siteServerRelativeUrl; 
    var spUsersInfo = GetPeoplePickerValues(eleId); 
    var clientContext = new SP.ClientContext(siteUrl); 
    var oList = clientContext.get_web().get_lists().getByTitle('VLS-dokument'); 
    var itemArray = []; 

    for(i=0;i<$.miniMenu.i.results.length;i++) 
    { 
    var item = $.miniMenu.i.results[i]; 

    var oListItem = oList.getItemById(item.Id); 
    oListItem.set_item('Informationsägare', SP.FieldUserValue.fromUser(spUsersInfo.Key)); 
    oListItem.update(); 
    itemArray.push(oListItem); 
    clientContext.Load(itemArray[itemArray.Length - 1]); 
    } 

    clientContext.executeQueryAsync(Function.createDelegate(this, function() { alert(""); }), Function.createDelegate(this, function() { alert(""); })); 

    return spUsersInfo; //.slice(0, -2) 
} 

spUsersInfo содержит OBJ пользователя, peoplePicker.GetAllUserInfo()

Возвращение от SP.FieldUserValue.fromUser (spUsersInfo.Key) быть проблемой, так как аварии приложения достигая этой линии oListItem.set_item ('Informationsägare', SP.FieldUserValue.fromUser (spUsersInfo.Key));

Какая часть пользовательского OBJ должна быть передана в SP.FieldUserValue.fromUser (spUsersInfo.Key) если не ключ? Есть ли другой способ сделать это?

+0

Что такое типичное значение 'spUsersInfo.Key'? Что делает 'GetPeoplePickerValues ​​()' do? – Thriggle

ответ

1

Колонки для выбора людей - это действительно просто столбцы поиска, просматривающие список пользовательских данных семейства сайтов. Вы можете установить столбец поиска либо путем указания идентификатора нужного элемента в списке поиска, либо путем создания специального объекта значения поля поиска (позволяющего SharePoint выполнять поиск идентификатора, учитывая желаемое текстовое значение).

В соответствии с the documentation значение, переданное в SP.FieldUserValue.fromUser(), должно быть именем пользователя в виде строки. На практике это должно быть отображаемое имя пользователя из списка пользовательских данных.

Так что, если вы не знаете пользователь подстановок ID, но знаете их отображаемое имя, вы бы использовать это: oListItem.set_item('Informationsägare',SP.FieldUserValue.fromUser(username));

Если вы не знаете имя пользователя, но знаете, что поиск идентификатор вы можете вместо этого передать это число item.set_item(), то есть oListItem.set_item('Informationsägare',lookupId);.

Если значение spUsersInfo.Key из метода GetPeoplePickers() в формате i:0#.w|Cool Person, то вы можете разделить это значение и просто получить строку Cool Person, чтобы кормить в SP.FieldUserValue.fromUser().

+0

Да 'spUsersInfo.Key' имеет формат' i: 0 # .w | membership | smth @ smth.com', и я также попытался установить 'username' в' spUsersInfo.Description' со значением 'smth @ smth .com' и 'spUsersInfo.DisplayText' со значением' surname, smth', без везения. Ну, это не сбой на этой линии. Я получаю ошибку при выполнении QueryAsync. Софар сузил его, чтобы все еще быть чем-то не так с 'oListItem' – QuiXXotic

+0

Он работает! Спасибо за ответ! –