Правильный способ записи пользователя SharePoint в пользовательское поле в списке SharePoint

Я записываю пользователя в список SharePoint.

Я читал, что в поле пользователя SharePoint есть такая строка: userId;#userLoginName

Я пробовал форматировать таким же образом при записи в поле пользователя, например, когда я пишу эту строку, она работает: 9;#i:0#.f|membership|[email protected]

Но что странно (по крайней мере для меня), так это то, что 9;# вроде работает или даже 9. Даже если я вообще не передаю информацию userLoginName, loginId кажется достаточно, чтобы распознать, о каком пользователе я говорю.

Кажется, это означает, что при записи в поле пользователя SharePoint вам нужен только идентификатор, а userLoginName или все, что после loginId, не имеет значения.

Я прав в своих рассуждениях здесь? Или, возможно, будут неожиданные последствия, если я оставлю информацию о userLoginName?


person Ectropy    schedule 17.06.2014    source источник


Ответы (2)


Ваше предположение верно, только User Id является обязательным свойством при указании значения для поля User.

Но поскольку для хранения значение поля User, рекомендуется получать и устанавливать значения с помощью этого объекта, как показано в следующем примере:

var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var lists = web.get_lists();
var list = lists.getByTitle(listTitle);
var item = list.getItemById(itemId);

var assignedToVal = new SP.FieldUserValue();
assignedToVal.set_lookupId(11);   //specify User Id 
item.set_item(fieldName,assignedToVal);
item.update();

ctx.executeQueryAsync(
    function() {
        console.log('Updated');
    },
    function(sender,args) {
        console.log('An error occurred:' + args.get_message());
    }
);
person Vadim Gremyachev    schedule 17.06.2014
comment
Хорошо, отлично, поэтому вместо того, чтобы просто делать newItem.set_item('Manager', "9"); (как работает мой текущий код), было бы лучше сделать var assignedToVal = new SP.FieldUserValue(); assignedToVal.set_lookupId(9); item.set_item(fieldName,assignedToVal);, если я правильно следую. - person Ectropy; 18.06.2014
comment
Если пользователь имеет тип SP.FieldUserValue, тогда user.get_id() возвращает UserId - person Vadim Gremyachev; 18.06.2014
comment
Не забудьте загрузить sp.js SP.SOD.executeFunc('sp.js', 'SP.ClientContext', loadSPContext); - person Florian Leitgeb; 19.06.2015

Я нахожу ответ здесь, используя имя человека, вместо этого идентификатор проще, чем найти идентификатор пользователя, если у вас его нет.

https://gist.github.com/rheid/18635032d8371c7825b3320eae57071f

// Single Person  
   var singleUser = SP.FieldUserValue.fromUser('Peter Dotsenko');  
   oListItem.set_item('PetkaPersonSingle', singleUser);  

   //Multi Person  
   var petkaUserMultiArray = new Array("[email protected]","Peter Dotsenko","domain\\peterd");  
   var lookups = [];  
   for (var ii in petkaUserMultiArray) {  
      var lookupValue = SP.FieldUserValue.fromUser(petkaUserMultiArray[ii]);  
      lookups.push(lookupValue);  
   }  
   oListItem.set_item('PetkaPersonMulti', lookups);
//
person JCM    schedule 07.08.2019