Scenario:
People picker control is great as it allows you to choose multiple users from authentication store. Also sometime we need to read all the users entered in people picker control.
Code:
protected PeopleEditor userPicker;
private SPUser[] ProcessUsers(SPWeb web)
{
PickerEntity entity;
if (!this.userPicker.Visible)
{
return new SPUser[] { web.CurrentUser };
}
int count = this.userPicker.ResolvedEntities.Count;
ArrayList list = new ArrayList();
SPUser[] userArray = new SPUser[count];
for (int i = 0; i < count; i++)
{
entity = (PickerEntity) this.userPicker.ResolvedEntities[i];
if (web.SiteUsers.GetByLoginNoThrow(entity.Key) == null)
{
list.Add(entity);
}
}
if (list.Count > 0)
{
SPUserInfo[] addUsersInfo = new SPUserInfo[list.Count];
for (int k = 0; k < list.Count; k++)
{
entity = (PickerEntity) list[k];
SPUserInfo info = new SPUserInfo();
info.LoginName = entity.Key;
info.Email = (string) entity.EntityData[PeopleEditor.PeopleInfo.Email];
info.Name = entity.DisplayText;
info.Notes = string.Empty;
addUsersInfo[k] = info;
}
web.SiteUsers.AddCollection(addUsersInfo);
}
for (int j = 0; j < count; j++)
{
entity = (PickerEntity) this.userPicker.ResolvedEntities[j];
userArray[j] = web.SiteUsers[entity.Key];
}
return userArray;
}
4 comments:
Thanks a lot for your post.
Can you please explain me more how to deploy or make that code work.
Thanks in advance.
P/s: My email is tdkhoa3112@live.com. Very glad too see you.
You can use the code in many spot , so i didn't tied it to one.
One basic example can be that you have a people picker control on your Layout ASPX page, and the method will return you all the users in the people picker.
Other can be a WP, you need to dynamically add this control to ur WP and then read all entries using the function given.
people picker control is placed on the grid. how i disable the People Picker control in run time?.
you can use some client side javascript to do that
Post a Comment