我试图通过使用JSOM来更新一个与另一个用户保持SP.Listitem的spUser。见代码波纹管
// 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’,SP.FieldUserValue.fromUser(spUsersInfo.Key))就成了问题所在;
如果不是密钥,那么应该将用户obj的哪一部分传递给SP.FieldUserValue.fromUser(spUsersInfo.Key)?还有别的办法吗?
发布于 2017-02-02 16:46:35
人员选择列实际上只是查找列,查找站点集合的用户信息列表。您可以通过在查找列表中指定所需项的ID,或者通过创建一个特殊的查找字段值对象来设置查找列(给定所需的文本值,让SharePoint完成查找ID的工作)。
根据文献资料,传递给SP.FieldUserValue.fromUser()
的值应该是用户名作为字符串。实际上,这应该是用户信息列表中的显示名称。
因此,如果您不知道用户的查找ID,但确实知道它们的显示名称,则可以使用以下命令:oListItem.set_item('Informationsägare',SP.FieldUserValue.fromUser(username));
如果您不知道用户名,但知道用户的查找ID,则可以直接将该号码传递给item.set_item()
,即oListItem.set_item('Informationsägare',lookupId);
。
如果来自spUsersInfo.Key
方法的GetPeoplePickers()
值是i:0#.w|Cool Person
格式的,那么您可以拆分该值,只需将字符串Cool Person
输入SP.FieldUserValue.fromUser()
。
https://stackoverflow.com/questions/42006052
复制相似问题