WebParts 2 – Añadiendo un poco más de funcionalidad al WebPart

Continuando con la serie de artículos acerca de la creación de WebParts para Sharepoint Services 3.0, el paso lógico es crear algo más que un simple WebPart que diga “Hola Mundo!” :-) Así que vamos a ponernos manos a la obra: ¿Que tal si primero identificamos a nuestro interlocutor? Si sabemos el nombre del usuario siempre podremos saludarlo y parecer así un poco más educados…

Para realizar esto vamos a agegar una segunda clase en el proyecto anterior MisPrimerosWebParts, de modo que cada WebPart sea un poco más evolucionado que su predecesor:

public class ElSegundo : WebPart
{
    protected override void RenderContents(HtmlTextWriter writer)
    {
        writer.Write(“Hola {0}”, this.Page.User.Identity.Name.ToString());
        base.RenderContents(writer);
    }
}

Bien, aunque no hemos avanzado demasiado por lo menos es un primer paso. Aunque lo que realmente me gustaría es que el usuario pudiese personalizar el saludo y de este modo abordaremos el verdadero propósito de este artículo: La persistencia de propiedades de la clase en Sharepoint Services.

No basta con crear una propiedad en la clase para que pueda ser persistida y representada en Sharepoint Services mediante un control PropertyGridEditorPart, ésta debe implementar una serie de atributos:

Personalizable(PersonalizationScope.Shared / User)

Indica el ámbito de personalización del WebPart. El ámbito Shared significa que los datos de personalización se aplican a todos los usuarios y para todos los controles personalizables de una página, y que también están disponibles para guardarse en la página. Mientras que el ámbito User indica que los datos de personalización específicos del usuario, así como los datos de personalización aplicables a todos los usuarios, se cargan para todos los controles personalizables de una página. Sólo los datos de personalización específicos del usuario pueden guardarse en la página.

WebBrowsable

Indica si la propiedad designada de un control de elementos Web se muestra en un objeto PropertyGridEditorPart.

WebDisplayName(“Nombre de la propiedad”)

Define el nombre descriptivo de una propiedad de un control de elementos Web.

WebDescription(“Descripción de la propiedad”)

Define el valor de cadena que se va a utilizar como información sobre herramientas de una propiedad de un control de elementos Web.

En nuestro caso particular vamos a crear una propiedad “Saludo” que permita almacenar el saludo preferido por el usuario, de modo que la propiedad implemente los atributos descritos anteriormente del siguiente modo:

private string strSaludo = “”

[Personalizable(PersonalizationScope.Shared) ,
WebBrowsable,
WebDisplayName(“Tipo de saludo”),
WebDescription(“Permite personalizar el tipo de saludo”)
]
public string Saludo
{
    get
    {
        if (strSaludo == String.Empty)
        {
        strSaludo = “Hola”;
        }
        return strSaludo;
    }
    set { strSaludo = value; }
}

Ahora podremos utilizar la nueva propiedad en el método “RenderControls” para mostrar correctamente el mensaje al usuario:

protected override void RenderContents(HtmlTextWriter writer)
{
    writer.Write(“{0}, {1}”, Saludo, this.Page.User.Identity.Name.ToString());
    base.RenderContents(writer);
}

Y para terminar, ya que nuestro WebPart posee propiedades personalizadas, vamos a redondearlo permitiendo la exportación de éstas en forma de fichero XML (esto es sumamente sencillo, y basta con agregar una línea de código en el constructor de la clase, indicando en modo de exportación):

public ElSegundo()
{
    ExportMode = WebPartExportMode.All;
}

Ahora si. Una vez hemos terminado, debemos volver a generar nuestro proyecto y seguir los pasos que indicábamos en el artículo anterior. Es decir: copiar el ensamblado en el servidor, añadirlo en la GAC, reiniciar IIS (de hecho sólo es necesario reiniciar los servicios de aquellos sitios de WSS 3.0 dónde se haya desplegado el WebPart, etc…).

Una vez agregado nuestro WebPart a una página podremos observar que podemos editar sus propiedades, y que entre ellas aparece la propiedad creada anteriormente, el valor de la cual podremos modificar y Sharepoint Services se encargará de persistir su valor en la página.

En el próximo artículo mostraremos cómo acceder a una base de datos SQL Server para mostrar información, y de paso como parametrizar la ubicación del servidor (ya sabemos que los servidores a veces nunca se están quietos) y protegernos en caso de un error en tiempo de ejecución mostrando un mensaje personalizado con la excepción.

** crossposting desde el blog de Lluís Franco en geeks.ms **

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>