正在用来自 SP.PeoplePicker 的 SP.Field 值更新 SP.ListItem
Updating SP.ListItem with SP.Field Value from SP.PeoplePicker
我正在尝试使用 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 包含用户对象,peoplePicker.GetAllUserInfo()
return 关闭 SP.FieldUserValue.fromUser(spUsersInfo.Key) 成为问题,因为应用程序崩溃到达该行 oListItem.set_item('Informationsägare', SP.FieldUserValue.fromUser(spUsersInfo.Key));
如果不是密钥,用户 obj 的哪一部分应该传递到 SP.FieldUserValue.fromUser(spUsersInfo.Key)?
还有其他方法吗?
人物选择器列实际上只是查找列,查找网站集的用户信息列表。您可以通过指定查找列表中所需项目的 ID 或创建特殊的查找字段值对象(让 SharePoint 执行查找 ID 的工作,给定所需的文本值)来设置查找列。
根据 the documentation 传递给 SP.FieldUserValue.fromUser()
的值应该是字符串形式的用户名。实际上,这应该是用户信息列表中的用户显示名称。
因此,如果您不知道用户的查找 ID,但知道他们的显示名称,您可以使用:oListItem.set_item('Informationsägare',SP.FieldUserValue.fromUser(username));
如果您不知道用户名,但知道用户的查找 ID,则可以将该号码直接传递给 item.set_item()
,即 oListItem.set_item('Informationsägare',lookupId);
.
如果您的 GetPeoplePickers()
方法中的 spUsersInfo.Key
值采用 i:0#.w|Cool Person
的格式,那么您可以拆分该值并只获取要输入的字符串 Cool Person
SP.FieldUserValue.fromUser()
.
我正在尝试使用 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 包含用户对象,peoplePicker.GetAllUserInfo()
return 关闭 SP.FieldUserValue.fromUser(spUsersInfo.Key) 成为问题,因为应用程序崩溃到达该行 oListItem.set_item('Informationsägare', SP.FieldUserValue.fromUser(spUsersInfo.Key));
如果不是密钥,用户 obj 的哪一部分应该传递到 SP.FieldUserValue.fromUser(spUsersInfo.Key)? 还有其他方法吗?
人物选择器列实际上只是查找列,查找网站集的用户信息列表。您可以通过指定查找列表中所需项目的 ID 或创建特殊的查找字段值对象(让 SharePoint 执行查找 ID 的工作,给定所需的文本值)来设置查找列。
根据 the documentation 传递给 SP.FieldUserValue.fromUser()
的值应该是字符串形式的用户名。实际上,这应该是用户信息列表中的用户显示名称。
因此,如果您不知道用户的查找 ID,但知道他们的显示名称,您可以使用:oListItem.set_item('Informationsägare',SP.FieldUserValue.fromUser(username));
如果您不知道用户名,但知道用户的查找 ID,则可以将该号码直接传递给 item.set_item()
,即 oListItem.set_item('Informationsägare',lookupId);
.
如果您的 GetPeoplePickers()
方法中的 spUsersInfo.Key
值采用 i:0#.w|Cool Person
的格式,那么您可以拆分该值并只获取要输入的字符串 Cool Person
SP.FieldUserValue.fromUser()
.