从人员选取器获取值并将其添加到人员列中的列表中

我在我的SP16网站上有一个简单的JS表单,我在其中添加了这个标准的人员选择器:


$(document).ready(function() {  

initializePeoplePicker('pickerUAT');

function initializePeoplePicker(peoplePickerElementId) {

var schema = {};

schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup';

schema['SearchPrincipalSource'] = 15;

schema['ResolvePrincipalSource'] = 15;

schema['AllowMultipleValues'] = false;

schema['MaximumEntitySuggestions'] = 50;

schema['Width'] = '269px';

this.SPClientPeoplePicker_InitStandaloneControlWrapper(peoplePickerElementId, null, schema);

}

});

我能够从选取器中获取所选值(作为显示名称,电子邮件等),如下所示:


function getEmailFromPeoplePicker(title) {

var ppDiv = $("div[title='" + title + "']")[0];

var peoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict.pickerUAT_TopSpan;

var userList = peoplePicker.GetAllUserInfo();

var userInfo = userList[0];

var addThisUser;

if(userInfo != null)

{

addThisUser = userInfo.Key;

}

return addThisUser;

}

我有一个列表,我可以添加从其他表单域获取的其他值,通常是通过document.getElementById(“XXX”).value和这段代码:


function addSubUser(addThisValue)  {

var clientContext = new SP.ClientContext(siteurl);  

var itemCreateInfo = new SP.ListItemCreationInformation();  

var valueToAdd = addThisValue; 

var list = clientContext.get_web()  

.get_lists()  

.getByTitle("UAT");   

this.oListItem = list.addItem(itemCreateInfo);  

oListItem.set_item('userUAT', valueToAdd);  

oListItem.update();  

clientContext.load(oListItem);  

clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));  

}

但是,此代码不适用于从人员选取器获取的值。控制台.log(typeof addThisUser)告诉我,我从选取器获得的值只是一个字符串,我是否正确地假设我不能简单地将字符串添加到人员/组列中?无论如何,我怎样才能让它工作?


哈士奇WWW
浏览 106回答 2
2回答

大话西游666

我认为您可以尝试使用两种不同的方法更新文件作为查找提供用户的ID    var LookupSingle = new SP.FieldLookupValue();      LookupSingle.set_lookupId(2);  // UserId    oListItem.set_item('SomeLookupColumn', LookupSingle); 作为单用户字段    var singleUser = SP.FieldUserValue.fromUser('name surname');      oListItem.set_item('SomeSingleUserColumn', singleUser);  

手掌心

我的本地 SharePoint 2016(多用户字段)中的示例测试脚本。CustomPeoplePicker:&nbsp; &nbsp; <div id="peoplePickerDiv"></div>&nbsp; &nbsp; <input id="Button1" onclick="SaveItem()" type="button" value="button" />&nbsp; &nbsp; <script src="/_layouts/15/sp.runtime.js"></script>&nbsp; &nbsp; <script src="/_layouts/15/sp.js"></script>&nbsp; &nbsp; <script src="/_layouts/15/1033/strings.js"></script>&nbsp; &nbsp; <script src="/_layouts/15/clienttemplates.js"></script>&nbsp; &nbsp; <script src="/_layouts/15/clientforms.js"></script>&nbsp; &nbsp; <script src="/_layouts/15/clientpeoplepicker.js"></script>&nbsp; &nbsp; <script src="/_layouts/15/autofill.js"></script>&nbsp; &nbsp; <script src="_layouts/15/sp.core.js"></script>&nbsp; &nbsp; <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>&nbsp; &nbsp; <script type="text/javascript">&nbsp; &nbsp; &nbsp; &nbsp; $(document).ready(function () {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);&nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; &nbsp; function sharePointReady() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context = new SP.ClientContext.get_current();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; web = context.get_web();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var schema = {};&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; schema['SearchPrincipalSource'] = 15;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; schema['ResolvePrincipalSource'] = 15;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; schema['AllowMultipleValues'] = true;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; schema['MaximumEntitySuggestions'] = 50;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; schema['Width'] = '280px';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.SPClientPeoplePicker_InitStandaloneControlWrapper('peoplePickerDiv', null, schema);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; function SaveItem() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var ctx = new SP.ClientContext.get_current();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var web = context.get_web();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var list = web.get_lists().getByTitle("MyList");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var listCreationInformation = new SP.ListItemCreationInformation();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var listItem = list.addItem(listCreationInformation);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var peoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Get information about all users.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var users = peoplePicker.GetAllUserInfo();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Get user keys.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var keys = peoplePicker.GetAllUserKeys();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var finalusers = new Array();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = 0; i < users.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var arryuser = users[i];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; finalusers.push(SP.FieldUserValue.fromUser(arryuser.Key));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; listItem.set_item("Title", "Title");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; listItem.set_item("Requestor", finalusers);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; listItem.update();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ctx.load(listItem);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ctx.executeQueryAsync(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Function.createDelegate(this, function () {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(listItem);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Function.createDelegate(this, function (sender, args) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert('Query failed. Error: ' + args.get_message());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; </script>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript