SharePoint 2010: Cómo añadir una WebPart programáticamente a una página!

Una de las posibilidades de las que disponemos, como casi siempre, a la hora de añadir una WebPart a una página es la de hacerlo de forma programática. El proceso es tan sencillo como:

  • Crear un proyecto de tipo “Empty SharePoint Project” en Visual Studio 2010.
  • Añadir una Feature al proyecto a través del explorador de soluciones. A través del diseñador de características de Visual Studio 2010, configuramos de forma adecuada las propiedades de la misma.
  • Añadir un Feature Event Receiver a la característica partiendo de nuevo del explorador de soluciones, seleccionando la feature y pulsando la opción correspondiente disponible en el menú contextual.
image image
  • Añadimos una referencia a System.Web y pasamos a codificarlo añadiendo las siguientes directivas using:
   1: //Espacios de nombres necesarios

   2: using SPWebPartPages= Microsoft.SharePoint.WebPartPages;

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

   4: using System.Collections.Generic;

  • Descomentamos el método FeatureActivated() y lo codificamos como sigue:
   1: public override void FeatureActivated(SPFeatureReceiverProperties properties)

   2: {

   3:     SPWeb spwWeb = (SPWeb)properties.Feature.Parent;

   4:     //Lista a mostrar en la XsltListViewWebPart

   5:     SPList splLista = spwWeb.Lists["Documentos Compartidos"];

   6:  

   7:     //Configuración de la XsltListViewWebPart

   8:     SPWebPartPages.XsltListViewWebPart xsltvwListViewWebPart =

   9:         new SPWebPartPages.XsltListViewWebPart();

  10:     xsltvwListViewWebPart.ListId = splLista.ID;

  11:     xsltvwListViewWebPart.ViewGuid =

  12:         splLista.DefaultView.ID.ToString();

  13:     xsltvwListViewWebPart.Title = "Documentos Compartidos";

  14:     xsltvwListViewWebPart.AllowConnect = true;

  15:     xsltvwListViewWebPart.AllowEdit = true;

  16:     xsltvwListViewWebPart.AllowHide = false;

  17:     xsltvwListViewWebPart.AllowMinimize = false;

  18:         

  19:     //Añadiendo la WebPart a la página

  20:     SPWebPartPages.SPLimitedWebPartManager spwpmWebPartManager =

  21:         spwWeb.GetLimitedWebPartManager("SitePages/WebPartsTest.aspx", 

  22:             PersonalizationScope.Shared);

  23:  

  24:     spwpmWebPartManager.AddWebPart(xsltvwListViewWebPart, "Zone 1", 0);

  25:     spwpmWebPartManager.Dispose();

  26: }

   1: public override void FeatureDeactivating(SPFeatureReceiverProperties properties)

   2: {

   3:     SPWeb spwWeb=(SPWeb)properties.Feature.Parent;

   4:     SPWebPartPages.SPLimitedWebPartManager spwpmWebPartManager =

   5:         spwWeb.GetLimitedWebPartManager("SitePages/WebPartsTest.aspx",

   6:             PersonalizationScope.Shared);

   7:     foreach (SPWebPartPages.WebPart spWebPart in spwpmWebPartManager.WebParts)

   8:     {

   9:         if (spWebPart.Title == "Documentos Compartidos")

  10:         {

  11:             spwpmWebPartManager.DeleteWebPart(spWebPart);

  12:             spwpmWebPartManager.Dispose();

  13:             break;

  14:         }

  15:     }

  16: }

  • En este caso, el objeto de tipo SPWebPartManager nos permite acceder a la colección de WebParts disponible en la página y eliminar aquella que cumpla la condición que hemos añadido.
  • Desplegamos el proyecto desde Visual Studio 2010 y comprobamos que en la página especificada (SitePages/WebPartTest.aspx) se muestra la WebPart añadida. Si desactivamos la feature, comprobaremos que la WebPart ya no se muestra.

image

 

Finalmente os dejo un enlace sobre como hacer lo mismo, pero utilizando PowerShell:http://farhanfaiz.wordpress.com/2011/07/25/sharepoint-2010-powershell-script-to-add-display-list-as-webpart.

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.

Un comentario en “SharePoint 2010: Cómo añadir una WebPart programáticamente a una página!”

Deja un comentario

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