我正在将用户写入SharePoint列表。
我已经读过SharePoint用户字段里面有这样的字符串:
userId;#userLoginName
我在写入User字段时尝试以相同的方式进行格式化,例如,当我写这个字符串时,它可以工作:
9;#i:0#.f|membership|ectropy@example.org
但奇怪的是(至少对我而言)9;#
似乎有用,甚至9
。即使我根本没有通过userLoginName
信息,loginId
似乎足以让我识别出我正在谈论的用户。
这似乎意味着在写入SharePoint用户字段时,您只需要ID,而userLoginName
或loginId
之后的所有内容都无关紧要。
我的推理是否正确?或者,如果我取消userLoginName信息,可能会产生意想不到的后果吗?
答案 0 :(得分:7)
您的假设是正确的,在为用户字段指定值时,只有用户ID是必需属性。
但由于SP.FieldUserValue object用于存储用户字段的值,因此建议使用此对象获取和设置值,如下例所示:
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());
}
);
答案 1 :(得分:0)
在这里我使用人名找到答案,而ID比查找用户ID更容易 如果没有的话。
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("peterd@domain.com","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);
//