Hi Readers,
There is a unique scenario where I have to pick user from a Custom People Picker on a Custom Form and then Push that User to a Client People Picker of a List Item using Javascript Client Object Model.
InOrder to achieve this functionality, I first tried to fetch the User from the Custom People Picker on the Form using JQuery,
var displayName = $("span.ms-entity-resolved div:first-child").attr("displaytext");
Problem is I do not get the ID of this User normally. So inorder to get the 'Id' of this User I searched this User into UserInformation List and then picked the ID of this User.
function AddItems(displayName) {
var userInfoList = siteObjects.web.get_siteUserInfoList();
var query = new SP.CamlQuery();
query.set_viewXml("<View><Query><Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + displayName + "</Value></Eq></Where></Query></View>");
siteObjects.UserCollListItem = userInfoList.getItems(query);
siteObjects.ctx.load(siteObjects.UserCollListItem);
siteObjects.ctx.executeQueryAsync(Function.createDelegate(null, AddItemsSuccess), Function.createDelegate(null, AddItemsFailure));
}
Then I fetched the List Item ID : userID = currentItem.get_item("ID");
Once I got the User ID , I can easily convert this String Type User into User Type using below code :
var userFV = new SP.FieldUserValue();
userFV.set_lookupId(userID);
and can easily set the People Picker List Item now
siteObjects.UserCourselistItem.set_item('UserName', userFV);
This is something very unique requirement and can be helpful for many.
There is a unique scenario where I have to pick user from a Custom People Picker on a Custom Form and then Push that User to a Client People Picker of a List Item using Javascript Client Object Model.
InOrder to achieve this functionality, I first tried to fetch the User from the Custom People Picker on the Form using JQuery,
var displayName = $("span.ms-entity-resolved div:first-child").attr("displaytext");
Problem is I do not get the ID of this User normally. So inorder to get the 'Id' of this User I searched this User into UserInformation List and then picked the ID of this User.
function AddItems(displayName) {
var userInfoList = siteObjects.web.get_siteUserInfoList();
var query = new SP.CamlQuery();
query.set_viewXml("<View><Query><Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + displayName + "</Value></Eq></Where></Query></View>");
siteObjects.UserCollListItem = userInfoList.getItems(query);
siteObjects.ctx.load(siteObjects.UserCollListItem);
siteObjects.ctx.executeQueryAsync(Function.createDelegate(null, AddItemsSuccess), Function.createDelegate(null, AddItemsFailure));
}
Then I fetched the List Item ID : userID = currentItem.get_item("ID");
Once I got the User ID , I can easily convert this String Type User into User Type using below code :
var userFV = new SP.FieldUserValue();
userFV.set_lookupId(userID);
and can easily set the People Picker List Item now
siteObjects.UserCourselistItem.set_item('UserName', userFV);
This is something very unique requirement and can be helpful for many.
Hi,, thanks fr the blog...I have multiple people picker in my form and I am unable to save the field in the list as the above method run asynchronously..it takes the latest value of people picker before it calls the success method...have u tried above with multiple people picker..if yes kindly share..greatly appreciate..thanks...
ReplyDeletehi, thanks for the blog.
ReplyDeletecan i run this code inside presaveaction() call ? i am using presaveaction() function inside my sp d 2010 , custom list form's newform.aspx page.
Hi Ankit, use setFieldValue() of SPService library to set multiple value.
ReplyDelete