Como usar el control PeopleEditor de Sharepoint 2007

El otro día (vaya a saber uno que día), uno de esos días donde pasamos inmersos frente a la pantalla de nuestra computadora y las agujas del reloj dan vueltas como locas sin parar, me encontré frente a un requerimiento (uno de los tantos que tenia este desarrollo) y que teníamos que resolver. Con Javier veníamos dando dura batalla a todo lo que teníamos que desarrollar, él mano a mano con el WorkFlow y yo mano a mano con los formularios personalizados de las listas. En un momento tuvimos que cambiar el enfoque del desarrollo y salirnos de Infopath 2007 y volcarnos al desarrollo tradicional de WebParts. Otra vez nos encontramos con que Infopath 2007 para Forms Services está limitado y hay cosas que no se pueden hacer (ese es un tema aparte) y desarrollar un formulario utilizando una WebPart para dar de altas elementos en la lista. Una de las cosas que tenía que tener el formulario era la posibilidad de seleccionar usuarios de Sharepoint y cargarlos. Todos hemos trabajados con los formularios que nos proporciona Sharepoint 2007 para las listas. Cuando tenemos un campo del tipo Persona o Grupo, en el formulario se nos  brinda un control que nos permite introducir dicho usuario o grupo, validarlo o desplegar una pantalla para buscarlo, en la siguiente imagen se muestra dicho control.

Imagen 1

persona

Estamos acostumbrados a utilizar este tipo de campos en los formularios de Sharepoint 2007 para cargar personas o grupos. Incluso Infopath 2007 provee un control Activex, Contact Selector para utilizar dicha características en los formularios creados, acá les dejo las dirección a dos artículos de amigos de la comunidad que explican al pie de la letra como utilizar dicho control,

·         Marco

·         Vlad-Point

Nosotros queríamos mantener esta característica en los formularios que estábamos creando, así que decidimos utilizar el control PeopleEditor que nos provee Sharepoint 2007 para incorporarlo en los mismos.
Tomamos la decisión de hacer un control de usuario (ASCX) y después cargarlo en una WebPart utilizando el método LoadControl. Esto fue meramente por simplicidad y velocidad en el desarrollo, puesto que para variar estábamos con los tiempos justos y no quisimos hacer todo el formulario en la WebPart dado que el mismo era bastante complejo y nos llevaría mucho más.
Así que nos pusimos a trabajar, lo primero que tuvimos que hacer fue registrar el Assembly de Sharepoint 2007 que tiene el control (Clase) PeopleEditor utilizando la directiva @Register en nuestro control de usuario, como se puede ver en la sección 1, no se olviden incluir la referencia al Assembly Microsoft.Sharepoint.Dll en su proyecto.

Sección 1

<%@ Register tagprefix="SharePoint" namespace="Microsoft.SharePoint.WebControls" assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

Una vez registrado el Assembly correspondiente estábamos en condiciones de poder usar el control en nuestro formulario, así que declarativamente lo incorporamos al mismo como se puede ver en la sección 2.

Sección 2

<SharePoint:PeopleEditor ID="PeopleEditorPersona" AllowEmpty="false" ValidatorEnabled="true" MultiSelect="false" runat="server" SelectionSet="User" CssClass="general_control" />

 

En la sección 3 vemos algunas de las propiedades que podemos establecer en el control PeopleEditor.

 

Sección 3

·         AllowEmpy: propiedad que indica si el control puede estar vacio.

·         ValidatorEnabled: propiedad que indica si la velicación esta activada.

·         MultiSelect: propiedad que indica si podemos selecciona más de un usuario a la vez.

·         SelectionSet: propiedad que indica que tipo de objeto podemos seleccionar, en nuestro caso, solo usuarios.

 

Todos los valores permitidos por la propiedad SelectionSet del control se encuentran listados en la siguiente enumeración dentro de la clase PeopleEditor:

 

Microsoft.SharePoint.WebControls.PeopleEditor.AccountType

 

Para más información de esta enumeración vistitar la pagina del MSDN

 

Una vez el control está cargado en nuestro formulario lo que debemos hacer es colocar el código necesario para poder tomar los usuarios ingresados en el mismo. En nuestra clase asociada al control ASCX nos referimos al control utilizando la propiedad ID  y utilizando la propiedad “Accounts” la cual nos brinda colección de strings con los usuarios cargados en el formato “dominiousuario”.

Con cada elemento de la posición del ArrayList podemos cargar el usuario del sitio Web para tomar sus valores, en la sección 4 vemos el código completo del método asociado al evento click de nuestro botón “Guardar” del formulario y un método adicional que obtiene el usuario de nuestro portal Sharepoint 2007 a partir de la cuenta cargada. Para obtener el usuario del portal utilizamos el objeto SPContext que nos brinda una referencia al contexto de ejecución del sitio actual.

Sección 4

    protected void cmdGuardar_Click(object sender, EventArgs e)

    {

        SPUser lUser = GetUserLogged(PeopleEditorPersona.Accounts[0].ToString());

        lblMsg.Text += "Nombre: " + lUser.Name + "<br>";

        lblMsg.Text += "Login Name: " + lUser.LoginName + "<br>";

        lblMsg.Text += "Email: " + lUser.Email + "<br>";

    }

    private SPUser GetUserLogged(string pUserAccount)

    {

        return SPContext.Current.Web.AllUsers[pUserAccount];

    }

 

En la magen 2 vemos como funciona el control dentro del formulario personalizdo creado para cargar el usuario de Sharepoint.

 

Imagen 2

 formulario

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *