Extensiones de VS 2005 para WSSv3: Creando Web Parts!

Con las extensiones de Visual Studio para Windows Sharepoint Services 3.0 es realmente sencillo crear y desplegar Web Parts en sitios WSSv3. Partiendo de un sitio SharePoint básico, los pasos a realizar para crear un web part son los siguientes:


Creación de la Web Part.


§  Crear un nuevo proyecto de Visual Studio 2005 de tipo Sharepoint Web Part.



Tras pulsar OK, vemos como VS 2005 nos genera automáticamente un archivo WebPart1.cs con la sintaxis necesaria para crear una Wb Part en WSSv3 ( clase, referencias necesarias y archivo de claves para posteriormente firmar el assembly).



§  El siguiente paso es añadir el contenido de la clase web part. En este caso el código a añadir devuelve los documentos añadidos durante el día actual en las listas de nuestro sitio de WSSv3. Necesitaremos añadir los siguientes espacios de nombres:


 


o   Para poder utilizar la fecha de sistema de WSSv3 tendremos que añadir a nuestro fichero de clase: Microsoft.Sharepoint.Utilities.


o   System.Data, para acceder a los distintos objetos de datos de .NET.


o   System.Web.UI.WebControls, para acceder a los distintos controles web de .NET.






using System;


using System.Runtime.InteropServices;


using System.Web.UI;


using System.Web.UI.WebControls.WebParts;


using System.Xml.Serialization;


using Microsoft.SharePoint;


using Microsoft.SharePoint.WebControls;


using Microsoft.SharePoint.WebPartPages;


using Microsoft.SharePoint.Utilities;


using System.Data;


using System.Web.UI.WebControls;


 


namespace DemoWebPart


{


    [Guid(“4491608a-a805-4fa1-a7f8-c6c33388501d”)]


    public class DemoWebPart : System.Web.UI.WebControls.WebParts.WebPart


    {


        protected override void Render(HtmlTextWriter writer)


        {


            //Acceso al site de WSSv3


            SPSite Site = SPControl.GetContextSite(this.Context);


            SPWeb Web=Site.OpenWeb();


            //Query para obtener los documentos añadidos hoy a WSSv3


            SPSiteDataQuery Query = new SPSiteDataQuery();


            //Fecha para comparar


            string dtFecha = SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Today);


            //Construimos la query


            Query.Query = “<OrderBy><FieldRef Name=’ID’ /></OrderBy>” +


                        “<Where><Geq><FieldRef Name=’Created’ />” +


                        “<Value Type=’DateTime’>” + dtFecha +


                        “</Value></Geq></Where>”;


            Query.ViewFields = “<FieldRef Name=’Title’ />”;


            Query.Webs = “<Webs Scope=’Recursive’ />”;


            //Mostrar la información


            DataTable tblTabla = Web.GetSiteData(Query);


            DataGrid dgrdGrid = new DataGrid();


            dgrdGrid.DataSource = tblTabla;


            //Si hay filas en la tabla, llenamos el grid.


            if (tblTabla.Rows.Count>0)


            {


                dgrdGrid.DataSource = tblTabla;


                dgrdGrid.DataBind();


                //Renderizamos el control en WSSv3


                dgrdGrid.RenderControl(writer);


            }


            else


            {


                writer.Write(“<b> Ningún ítem ha sido añadido en el día de hoy a las listas.</b>”);


            }


                    }


    }


}


Despliegue de la Web Part


Para desplegar la solución basta con hacer el deploy de la solución. Para ello en el explorador de soluciones (Solution Explorer) seleccionar la solución, pulsar el botón derecho del ratón, seleccionar Deploy Solution. Al hacer el deploy de la solución estamos realizando las siguientes operaciones:


§  Registro del assembly en la GAC del servidor de WSSv3.



 


§  Añadir el assembly como control seguro en el archivo web.config de nuestro sitio de WSSv3 (el path es C:InetpubwwwrootwssVirtualDirectories80).



§  Registrar el assemply dentro de la Solution Management de la administración central de WSSv3: Operations -> Solution Management.



§  Añadir la web part como una feature de WSSv3. Para ver la feature, nos vamos Sites Actions –> Site Settings y luego bajo la columna  Site Collection Administration pinchamos en la opción Site Collection Features. En la página que se abre veremos la feature correspondiente a la web part que hemos desarrollado.



§  Añadir la web part en la galería de web parts de nuestro sitio de WSSv3. Para acceder a la galería los pasos son: Site Actions -> Site Settings   y en la columna Galleries pinchar sobre webparts. En la siguiente página veremos las webparts instaladas y activadas en nuestros sitio WSSv3.




§  Además, en el path de nuestra solución (en la carpeta debug) se generan dos archivos interesantes para poder instalar la web part que hemos creado en cualquier otro sitio de WSSv3:


o   El archivo DemoWebPart.wsp que contiene la descripción de la web part que hemos creado.


o   El archivo setup.bat con los comandos necesarios para desplegar la Web Part y que realiza la misma secuencia de operaciones descritas en la operación de deploy desde VS 2005. Este fichero es el que tendremos que abrir para modificar la url del sitio de WSSv3 dónde queremos desplegar la web part.


Probando la web part.


Para probar la web aprt, nos basta con editar nuestro sitio SharePoint para añadir el WebPart a una página.  Para ello hay que abrir en la página principal de nuestro sitio WSSv3: http://localhost.  Una vez abierta la página ir a Site Actions y seleccionar Edit Page, para entrar en el modo de edición. Una vez en el modo de edición, seleccionar la zona donde se quiere añadir el Web Part, por ejemplo la izquierda (Left) y seleccionar el comando  Add a Web Part. Dentro de la ventana de Add Web Parts to Left seleccionar la Web Part que se quiere añadir (DemoWebPart) y  pulsar el botón Add, con lo que se añade el nuevo Web Part a la página.






Como habéis comprobado, crear y desplegar una Web Part en un sitio WSSv3 es realmente sencillo gracias a las extensiones de VS 2005 para WSSv3. Estas extensiones también nos dan plantillas para definir listas personalizadas, team sites, features, definiciones de sitios o cualquier otro elemento que queramos desplegar (eventos, content types, etc.). Espero que la información haya resultado interesante.