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.

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.

18 comentarios en “Extensiones de VS 2005 para WSSv3: Creando Web Parts!”

  1. Pero por supuesto, esta clarísimo el post :)!

    Y acotar que aunque el nombre sea extensiones para WSS, esto también sirve para los productos contruidos sobre WSS, en este caso también sirve para MOSS 2007.

    Saludos,

  2. Hola, aprovecho este post para ver si me podeis solucionar un problemilla. Tengo instalado las extensiones de vs 2005 para wss3.0, pero cuando inicio un proyecto de tipo webpart, no me encuentra la referencia a microsoft.sharepoint.dll. El wss 3.0 lo tengo en un ordenador y el vs 2005 en otro.

    ¿Alguna ayudica?

    Gracias.

  3. Hola!
    Cuando creas un proyecto de Web Part a partir de las extensiones VS 2005 para WSSv3, te añade la dll que mencionas y fija el path a C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions12ISAPIMicrosoft.SharePoint.dll que existe en la máquina donde tengamos instalado WSSv3 o MOSS. Entonces como estás trabajando en una máquina que no tiene una instalación de WSSv3, lo que tienes que hacer es:
    – Eliminar la referencia de tu proyecto.
    – Copiar la dll anterior en tu máquina de desarrollo.
    – Agregar la dll desde el path donde hayas copiado la dll.

    En principio con esto se solucionaría tu problemilla.

    Un saludo

    JC

  4. Hola, gracias por contestar.
    ¿No hay otra forma de hacerlo?
    Me dijeron que instalara el sdk, pero al instalarlo no me instalo ninguna dll, solo documentación.

    Gracias.

  5. Hola!
    En principio esa es la forma…además piensa que si viniese con el sdk estarías haciendo lo mismo que si la copias manualmente en tu máquina de desarrollo.
    Un saludo
    JC

  6. Hola,

    A ver si alguien me puede ayudar, instale el sharepoint y el VS 2005, todo funciona bien por separado, pero cuando trato de hacer una webpart me sale un error al publicafr

    “Caracteres no válidos en la ruta de acceso”

    no me dice la linea ni nada asi que no entiendo bien de que se trata, dado que lo unico que puse en la funcion Render que genera la plantilla es un writer.write (“Hola Mundo“);, No puse ningun otro codigo.

  7. Hola!
    Se me ocurre que puedes tener problemas con el paquete de idioma que hayas instalado para Sharepoint y el idioma propio de las extensiones (inglés).

    Mira esto y a ver si averiguas algo.

    Un saludo

    JC

  8. Hola,
    agradecería ayuda respecto al siguente problema, en sharepoint tengo un calendario en donde administro la sala de reuniones, lo que quiero evitar es que alguien genere una reserva en un mismo horario, como podria resolver esto?

  9. Hola,
    agradecería ayuda respecto al siguente problema, en sharepoint tengo un calendario en donde administro la sala de reuniones, lo que quiero evitar es que alguien genere una reserva en un mismo horario, como podria resolver esto?

  10. Hola,
    agradecería ayuda respecto al siguente problema, en sharepoint tengo un calendario en donde administro la sala de reuniones, lo que quiero evitar es que alguien genere una reserva en un mismo horario, como podria resolver esto?

  11. Hola Darz,
    Veamos a primera vista eso no es funcionalidad estándar de una lista de tipo calendario. Lo puedes conseguir aprovechándote de los manejadores de eventos del modelo de objetos de Sharepoint. Lo que tienes que hacer es crear un manejador de eventos que responda al evento ItemAdding, de manera que cuando se esté añadiendo un evento al calendario compruebe si la hora ya está reservada y no deje añadir el evento. Por supuesto, tienes que diseñar bien el manejador, porque te tienes que fijar en datos temporales para comprobarlo.

    Salu2

    JC

  12. Tengo el siguiente problema. Al momento de agregar la nueva webpart me aparece un mensaje que me indica que no puede importar la webpart. Qué pudo haber fallado?

  13. Hola José Luis,
    Parece que te está fallando el despliegue…comprueba que en el web.config de tu aplicación web se ha añadido la correspondiente referencia a la WebPart…comprueba también que la WebPart te aparece en la galería de WebParts o que la puedes añadir.

    Un saludo!

Deja un comentario

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