SharePoint 2010: Añadiendo propiedades a la Toolpart (I)!

Una de las novedades que tenemos a nivel de desarrollo para SharePoint 2010 es la posibilidad de crear WebParts de forma visual. Para ello, Visual Studio 2010 incorpora una plantilla de proyecto y de elemento de proyecto que permite crear este tipo de WebParts y obtener una productividad máxima en el desarrollo. Ahora bien, en el desarrollo de WebParts para SharePoint es fundamental disponer de opciones flexibles de configuración que vienen dadas por las propiedades que se pueden configurar a través del panel de control. Este panel de control se puede extender con nuestras propiedades personalizadas como veremos en este primer post y en el siguiente. Empecemos.

Creación de la WebPart

En primer lugar, vamos a crear una sencilla WebPart de tipo visual en Visual Studio 2010:

  • Creamos un proyecto de tipo “Empty SharePoint project”.
  • Elegimos como tipo de despliegue “Deploy as farm solution” ya que vamos a crear una WebPart de tipo visual.
  • Una vez creado el proyecto, le agregamos un elemento de tipo WebPart visual de forma que la correspondiente característica se crea en el nodo Feature del proyecto.
image image image
  • Configuramos la característica de forma adecuada: cambiando su nombre, especificando los valores de las propiedades Title, Description, Scope, …
  • Diseñamos nuestra WebPart visualmente para que realice la funcionalidad deseada. En mi caso, simplemente he añadido una etiqueta en la que se mostrará el valor de la propiedad añadida a la Toolpart.
image   image
  • Nos vamos al archivo de código asociado al user control que representa la WebPart visual y realizamos los siguientes cambios:
    • Añadimos un miembro de tipo string a la clase.
    • Configuramos la etiqueta de la WebPart con el valor del string.
   1: using System; 

   2: using System.Web.UI; 

   3: using System.Web.UI.WebControls; 

   4: using System.Web.UI.WebControls.WebParts; 

   5:  

   6: namespace SPVisualWebPart1.SPVisualWebPart1 

   7: { 

   8:     public partial class SPVisualWebPart1UserControl : UserControl 

   9:     { 

  10:         public string sUrlSite; 

  11:         protected void Page_Load(object sender, EventArgs e) 

  12:         { 

  13:             this.Label1.Text = sUrlSite; 

  14:         } 

  15:     } 

  16: }

Añadiendo propiedades personalizadas a la WebPart

Una vez diseñada la WebPart de acuerdo a nuestras necesidades, abrimos el archivo “.cs” que contiene la clase que representa realmente nuestra WebPart (hereda de System.Web.UI.WebControls.WebParts.WebPart) y que se encarga entre otras cosas de cargar el control de usuario que hemos creado hace un momento. Es en esta clase dónde tenemos que añadir toda la “fontanería” que nos permite añadir nuevas propiedades al panel de control de la WebPart. Una primera aproximación para añadir nuevas propiedades consiste en:

  • Añadir a la clase la propiedad correspondiente que representa el nuevo elemento que se va a añadir en el panel de control. Si esta propiedad es de tipo String, como en el ejemplo, implica que veremos una caja de texto en el panel de control.
  • Añadir en el método CraeteChildControls() la lógica necesaria para que en la WebPart se use la propiedad configurada.
   1: using System;

   2: using System.ComponentModel;

   3: using System.Web;

   4: using System.Web.UI;

   5: using System.Web.UI.WebControls;

   6: using System.Web.UI.WebControls.WebParts;

   7: using Microsoft.SharePoint;

   8: using Microsoft.SharePoint.WebControls;

   9:  

  10: namespace SPVisualWebPart1.SPVisualWebPart1

  11: {

  12:     [ToolboxItemAttribute(false)]

  13:     public class SPVisualWebPart1 : WebPart

  14:     {

  15:         // Visual Studio might automatically update this path when you change the Visual Web Part project item.

  16:         private const string _ascxPath = @"~/_CONTROLTEMPLATES/SPVisualWebPart1/SPVisualWebPart1/SPVisualWebPart1UserControl.ascx";

  17:         private String _intranetUrl = null;

  18:  

  19:         [Personalizable(), WebBrowsable]

  20:         public String IntranetUrl

  21:         {

  22:             get { return _intranetUrl; }

  23:             set { _intranetUrl = value; }

  24:         }

  25:         protected override void CreateChildControls()

  26:         {

  27:             Control control = Page.LoadControl(_ascxPath);           

  28:             ((SPVisualWebPart1UserControl)control).sUrlSite =

  29:                 this.IntranetUrl;

  30:             Controls.Add(control);

  31:         }

  32:     }

  33: }

Como podéis comprobar en el código anterior:

  • Hemos añadido una propiedad de tipo String a la clase que decoramos con los atributos Personalizale() y WebBrowsable que son los que permiten que aparezca en el panel de control de la WebPart lista para su uso.
  • A continuación en el método CreateChildControls() simplemente inicializamos el valor del miembro añadido en la clase del control de usuario con el valor de la propiedad personalizada.

Probando la solución 

Una vez añadida la propiedad, sólo nos queda probar la funcionalidad de la misma:

  • Desplegamos la WebPart desde Visual Studio utilizando la opción de “Deploy”.
  • Añadimos la WebPart en una página del sitio y a través del menú de edición comprobamos que en la sección “Miscellaneous” o “Varios” en función del idioma aparece la propiedad creada y lista para su uso.
image image image

Y hasta aquí llega este primer post sobre como añadir propiedades personalizadas al panel de control de una WebPart visual.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

4 comentarios en “SharePoint 2010: Añadiendo propiedades a la Toolpart (I)!”

Deja un comentario

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