SharePoint 2010: Como crear una vista de lista programáticamente!

El otro día comentaba en este post como añadir programáticamente una WebPart a una página de un sitio de SharePoint. En concreto, en el ejemplo mostraba como añadir una WebPart de tipo XsltListViewWebPart con la que he estado experimentando estos días…y he de decir que la flexibilidad que tiene para configurarla por programa es bastante potente. De hecho, en este post vamos a ver como crear una vista de lista programáticamente y como usarla luego en una XsltListViewWebPart que añadiremos  a una página del sitio de trabajo:

  • En Visual Studio 2010 creamos un proyecto de tipo aplicación de consola (también podría servirnos uno de tipo “Empty SharePoint Project” al que luego le añadiríamos la correspondiente Feature con su Feature Event Receiver).
  • Añadimos referencias a Microsoft.SharePoint y System.Web.
  • Al archivo Program.cs le añadimos las siguientes directivas using:
   1: using Microsoft.SharePoint;

   2: using SPWebPartPages = Microsoft.SharePoint.WebPartPages;

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

  • Creamos un método estático que nos permita crear la vista de una lista del sitio, configurarla de forma adecuada y usarla como fuente de datos de una XsltListViewWebPart que añadiremos posteriormente a una página existente.
   1: static void AddWebPart()

   2: {

   3:     SPSite spsSitio=new SPSite("http://demo2010a:100/sites/PortalIntranet");            

   4:     SPWeb spwWeb = spsSitio.OpenWeb();

   5:  

   6:     SPList splLista = 

   7:         spwWeb.Lists["Documentos Compartidos"];

   8:                 

   9:     //Creación de la nueva vista            

  10:     splLista.Views[splLista.DefaultView.ID].Clone(

  11:         "Vista personalizada", 10, true, false);

  12:     //Modificación de la vista

  13:     SPView spVista = splLista.Views["Vista personalizada"];            

  14:     spVista.Title = "Vista personalizada";            

  15:     spVista.ViewFields.Delete("Modified");

  16:     spVista.Update();

  17:  

  18:     //Configuración de la XsltListViewWebPart

  19:     SPWebPartPages.XsltListViewWebPart xsltvwListViewWebPart =

  20:     new SPWebPartPages.XsltListViewWebPart();               

  21:     xsltvwListViewWebPart.ListId = splLista.ID;

  22:     xsltvwListViewWebPart.ViewGuid =

  23:         splLista.Views["Vista personalizada"].ID.ToString();

  24:     xsltvwListViewWebPart.Title = 

  25:         splLista.Views["Vista personalizada"].Title;

  26:     xsltvwListViewWebPart.AllowConnect = true;

  27:     xsltvwListViewWebPart.AllowEdit = true;

  28:     xsltvwListViewWebPart.AllowHide = false;

  29:     xsltvwListViewWebPart.AllowMinimize = false;       

  30:  

  31:  

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

  33:     SPWebPartPages.SPLimitedWebPartManager spwpmWebPartManager =

  34:         spwWeb.GetLimitedWebPartManager("SitePages/XsltListViewTest.aspx",

  35:             PersonalizationScope.Shared);

  36:  

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

  38:     spwpmWebPartManager.Dispose();

  39:     spwWeb.Dispose();

  40:     spsSitio.Dispose();

  41: }

  • Como vemos, creamos una vista de la biblioteca “Documentos Compartidos” utilizando el método Clone(). A continuación creamos un instancia de SPView a partir de la vista creada y al configuramos según necesitemos. En mi caso, he quitado la columna “Modified”. A partir de aquí, simplemente se crea una instancia de XsltListViewWebPart que se configura de acuerdo a esta vista y se añade a una página el sitio.
  • Ejecutamos el código y comprobamos que en la página añadida se muestra la vista creada.
image image
  • Finalmente, os dejo el código necesario para eliminar la WebPart de la página y la vista creada en la lista.
   1: static void DeleteWebPart()

   2: {

   3:     SPSite spsSitio = 

   4:         new SPSite("http://demo2010a:100/sites/PortalIntranet");

   5:     SPWeb spwWeb = spsSitio.OpenWeb();

   6:     SPWebPartPages.SPLimitedWebPartManager spwpmWebPartManager =

   7:         spwWeb.GetLimitedWebPartManager("SitePages/XsltListViewTest.aspx",

   8:             PersonalizationScope.Shared);

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

  10:     {

  11:         if (spWebPart.Title == "Vista personalizada")

  12:         {

  13:             spwpmWebPartManager.DeleteWebPart(spWebPart);

  14:             spwpmWebPartManager.Dispose();

  15:             break;

  16:         }

  17:     }

  18:     SPList splLista =

  19:         spwWeb.Lists["Documentos Compartidos"];

  20:     foreach (SPView spVista in splLista.Views)

  21:     {

  22:         if (spVista.Title == "Vista personalizada")

  23:         {

  24:             splLista.Views.Delete(spVista.ID);

  25:             break;

  26:         }

  27:     }

  28:  

  29:     spsSitio.Dispose();

  30:     spwWeb.Dispose();

  31: }

Y hasta aquí llega este artículo sobre como crear vistas de lista de forma programática.

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: Como crear una vista de lista programáticamente!”

Deja un comentario

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