Sharepoint PeopleEditor control (AKA PeoplePicker)
Para usar el people picker en una página ASP.NET:
<SharePoint:PeopleEditor runat="server" ID="PE1" AutoPostBack="true" AllowEmpty="false" SelectionSet="User,SecGroup,SPGroup" BorderWidth="0" Width="200px" PlaceButtonsUnderEntityEditor="false" Rows="1"/>
Validación de al menos un usuario resuelto:
(PE1.Accounts.Count<1)
Guardando los usuarios seleccionados en una columna de tipo Person:
SPFieldUserValueCollection values = new SPFieldUserValueCollection(); foreach (PickerEntity entity in PE1.ResolvedEntities) { SPFieldUserValue fuv = new SPFieldUserValue(SPContext.Current.Web, Convert.ToInt16(entity.EntityData[PeopleEditorEntityDataKeys.UserId]), entity.Description); values.Add(fuv); } oListItem["ColumnaTipoPersona"] = values;
Recuperando el valor guardado en una columna de tipo Person y asignación al control PeoplePicker:
// oListItem = SPListItem de la lista donde se encuentra la columna tipo Person: SPFieldUserValue ppUser = new SPFieldUserValue(oWebsiteRoot, oListItem["ColumnaTipoPersona"].ToString()); PE1.CommaSeparatedAccounts = ppUser.User.LoginName;
Para la asignación de valor tambien se puede usar directamente una cuenta de usuario con la forma “dominio\usuario”, sin embargo es recomendable asignar el valor desde la clase SPFieldUserValue, sobre todo cuando sean valores recuperados desde otro origen.
Referencias:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.peopleeditor.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduservalue.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.pickerentity.aspx
Es posible realizar configuraciones especiales como incluir propiedades extra del directorio activo, delimitar las búsquedas dentro de un arbol del bosque del A.D., etc, vía la utilería stsadm: