SharePoint 2013: Cómo añadir propiedades personalizadas en la ToolPart de una WebPart (I)!

Si queremos añadir propiedades personalizadas en el ToolPart de una WebPart para SharePoint 2013 creada con Visual Studio 2012 podemos seguir una aproximación similar a las ya conocida para versiones previas de SharePoint:

  • En Visual Studio 2012 creamos un proyecto de tipo “SharePoint 2013 – Proyecto vacío”, elegimos como tipo de despliegue “Granja”.
  • A continuación, añadimos un elemento de tipo “Elemento web visual”.
  • En el diseñador de la WebPart añadimos un simple control de tipo Label.

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }image

  • Nos vamos a la vista de código de la WebPart y modificamos la clase parcial correspondiente de la siguiente forma:
   1:  using System;
   2:  using System.ComponentModel;
   3:  using System.Web.UI.WebControls.WebParts;
   4:   
   5:  namespace SPCustomWPProperties.SPCustomPropertiesWPSample
   6:  {
   7:      [ToolboxItemAttribute(false)]
   8:      public partial class SPCustomPropertiesWPSample : WebPart
   9:      {
  10:          private String _intranetUrl = null;
  11:        
  12:          [Personalizable(), WebBrowsable]
  13:          public String IntranetUrl
  14:          {
  15:              get { return _intranetUrl; }
  16:              set { _intranetUrl = value; }
  17:          }
  18:   
  19:          public SPCustomPropertiesWPSample()
  20:          {
  21:          }
  22:   
  23:          protected override void OnInit(EventArgs e)
  24:          {
  25:              base.OnInit(e);
  26:              InitializeControl();
  27:          }
  28:   
  29:          protected void Page_Load(object sender, EventArgs e)
  30:          {
  31:              this.Label1.Text = this.IntranetUrl; 
  32:          }
  33:      }
  34:  }

Como se puede 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.

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 “Implementar”.
  • 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