Lluís Franco on Geeks.ms
  • Home

WebParts 1 – Creando nuestro primer WebPart para Sharepoint Services 3.0

  • By lfranco
  • Feb-2-2007
  • Sin categoría
  • 13 Comments.

Este pretende ser el primero de varios artículos dedicados a la creación de WebParts para Sharepoint Services 3.0, utilizando Visual Studio 2005 como herramienta y C# como lenguaje de desarrollo. Pero antes de empezar, quiero dar las gracias al colega MVP Carlos Segura (que sabe más que el maestro Yoda y no tiene sus orejas) por su estupendo sitio, que ha sido el culpable de mi adicción a esta estupenda herramienta de colaboración que es Sharepoint.


Empezaremos con la creación un WebPart muy sencillo (el típico «Hola mundo!»), estableceremos los pasos a seguir para su correcta publicación en un Sharepoint, y poco a poco iremos avanzando, ampliando sus funcionalidades:




  • Mostrando la información del usuario autentificado

  • Persistiendo las propiedades del WebPart en Sharepoint Services y permitiendo su exportación.

  • Extendiendo la funcionalidad para acceder a bases de datos

  • Agregando un control de excepciones para obtener información en el servidor de explotación en caso de error.

  • Comunicando con otros WebParts

Realmente la creación y distribución de un WebPart es ahora mucho más sencillo que en versiones anteriores, ya que esta versión está construido sobre ASP.NET 2.0, con lo que se pueden aprovechar todas las nuevas características introducidas.


Así pues para empezar a crear nuestro primer WebPart basta con iniciar un nuevo proyecto «Biblioteca de clases» con Visual Studio 2005, utilizando C# como lenguaje de desarrollo:



Llamaremos a nuestro proyecto MisPrimerosWebParts, y a continuación agegaremos una referencia al ensamblado System.Web, necesario para poder acceder al espacio de nombres WebParts. Esto es de vital importancia ya que todo WebPart que deseemos crear debe heredar de la clase base WebPart.



A continuación, agregaremos los espacios de nombres comentados anteriormente:


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

Y ya podemos empezar a crear nuestra primera clase derivada de WebPart, destinada a convertirse en el primer WebPart de nuestra colección. Observar que el código resultante queda reducido a la mínima expresión:


namespace MisPrimerosWebParts
{
    public class ElPrimero:WebPart
    {
        protected override void RenderContents(HtmlTextWriter writer)
        {
            writer.Write(«Hola mundo!»);
            base.RenderContents(writer);
        }
    }
}


¿Y esto es todo? Pues en lo referente a código si, eso es todo lo que vamos a codificar para este WebPart. Pero para poder ver publicado finalmente este WebPart hay que seguir cuidadosamente una serie de pasos:



  1. Firmar el ensamblado: Del mismo modo que en versiones anteriores debemos firmar el ensamblado, sin embargo esto es ahora mucho más sencillo. Basta con ir a a las propiedades del proyecto (pestaña Firma) y seleccionar que vamos a firmar el ensamblado con una clave nueva. Escribiremos el nombre de fichero que almacenará la firma, y (muy recomendado) protegeremos el archivo de clave usando una contraseña segura. De este modo al compilar la aplicación se creará el nuevo fichero generado con extensión *.pfx que podemos abrir desde Visual Studio para ver la clave que contiene.



  2. Generar la solución (Ctrl+Shift+B) para crear el ensamblado MisPrimerosWebParts.dll y el fichero con la firma MisPrimerosWebParts.pfx (que en principio no volveremos a necesitar).

  3. Añadir el ensamblado a la Global Assembly Cache: Para poder utilizar el WebPart desde varios sitios de Sharepoint Services, vamos a instalar este ensamblado en la Global Assembly Cache (en adelante GAC). El primer paso consiste en copiar este ensamblado en una carpeta local del servidor, por ejemplo C:MisWebParts. A continuación debemos ejecutar la utilidad de línea de comandos Gacutil.exe situada en la ubicación:

    C:%program files%Microsoft Visual Studio 8SDKv2.0Bin

    Para ello abriremos una ventana de consola, nos situaremos en esta ubicación y agregaremos el ensamblado a la GAC de este modo:

    Gacutil -I C:MisWebPartsMisPrimerosWebParts.dll



  4. Registrar esta clase en el web.config como un control seguro: Aunque previamente debemos conocer al public token de nuestro ensamblado, y tal vez el modo más sencillo sea visitando la carpeta dónde se encuentra la GAC (%Windows%Assembly) y comprobando de paso que el assembly se ha instalado correctamente:



    Una vez disponemos del token de nuestro ensamblado, debemos modificar el fichero web.config de nuestro sitio (os recuerdo que habitualmente se encuentra en: C:InetpubwwwrootwssVirtualDirectories%sitio%web.config), agregando este control en la sección «SafeControls» para posteriormente agregarlo a la colección de WebParts del site.



  5. Y por fin, la parte más esperada: vamos a agregar nuestro ensamblado a la lista de elementos web de nuestro sitio. Para ello debemos reiniciar los servicios del IIS (¡muy importante y algo de que solemos olvidarnos a menudo!), abrir la página de configuración del sitio y mostrar la lista de elementos web situada en: Configuración del sitio/Galerías/Elementos Web. Aquí encontraremos todos los WebParts disponibles para añadir a las páginas de Sharepoint Services pero sin embargo nuestro nuevo y flamante WebPart no aparece. Para que aparezca hay que añadirlo manualmente a la lista mediante la opción «Nuevo», que nos mostrará todos los elementos contenidos en los controles de la sección «SafeControls» del web.config, marcar el elemento y también la opción «¿Sobrescribir si el archivo ya existe?» (por si acaso no es la primera vez que lo añadimos), pulsamos el botón «Llenar galería» y ¡voilà!, ¡Hemos terminado!

  6. Ahora ya podemos ir al diseño de la página en la que queramos insertar el WebPart y agregarlo desde la lista de elementos disponibles. El resultado debería ser algo similar a esto:


Bien, la primera conclusión que sacamos es que da bastante más trabajo la publicación de un WebPart que la creación propiamente dicha, no es así? Sin embargo, el resultado obtenido bien merece la pena.


En los próximos artículos iremos extendiendo la funcionalidad de este WebPart para hacerlo más complejo, ¡hasta entonces!

Comments

13 Responsesso far

  1. robertogr dice:
    2 febrero, 2007 a las 5:28 pm

    Muy util y muy bien explicado. Muchas gracias!

    Responder
  2. jorge dice:
    2 febrero, 2007 a las 6:18 pm

    Muy interesante… pero… ¡esquirol!, ¡has abandonado VB!… ¡mala pécora, mala persona!. =:-D

    Responder
  3. jcgonzalez dice:
    3 febrero, 2007 a las 1:14 am

    Hola Lluís, muy bueno el post…Tb te remito a uno que publicamos en el blog del CIIN, http://geeks.ms/blogs/ciin/archive/2006/12/01/extensiones-de-vs-2005-para-wssv3-creando-web-parts.aspx, y en el que explicabamos como crear web parts con las extensiones de WSSv3 para VS 2005 y que nos facilitan tanto la creación de las web parts en base a una plantilla específica, como el despliegue de las mismas que es automático…sólo otra cosilla, porque en su momento me lo preguntaron en un curso que hicimos de WSSv3, no es necesario que reinicies todo el IIS, sino sólo aquellos sitios de WSSv3 dónde hayas desplegado la web part.
    Un saludo
    JC

    Responder
  4. lfranco dice:
    3 febrero, 2007 a las 10:16 pm

    🙂
    Gracias!
    Muy buenos artículos en tu blog, lo revisaré más a menudo.

    Saludos desde Andorra,

    Responder
  5. anonymous dice:
    6 febrero, 2007 a las 3:10 pm

    Continuando con la serie de artículos acerca de la creación de WebParts para Sharepoint Services 3.0,

    Responder
  6. anonymous dice:
    12 septiembre, 2007 a las 4:44 pm

    Hola…

    No se si para que el WebPart se haga visible en la lista de Nuevo WebPart faltaria explicar como se genera el archivo .wsp

    To Create a .webpart file for your Web Part
    After you have deployed your Web Part and registered it in the Safe Control list, navigate to http://myserver/_layouts/newdwp.aspx, where myserver is the name of the server on which your SharePoint site is deployed.

    Select the check box next to MyWebPartLibrary.HelloWorldWebPart.

    Click Populate Gallery and the Web Part is added to the Team Site Gallery.

    Note:
    To create a .webpart file for your Web Part, you can select Edit for the Web Part in the Web Part Gallery, and then click Export. You are prompted to provide a location in which to put the .webpart file.

    Saludos y espero que sea de utilidad
    CarlosMag

    Responder
  7. anonymous dice:
    10 febrero, 2008 a las 7:39 pm

    PingBack desde Mi primer WebPart « Sharepoint

    Responder
  8. anonymous dice:
    18 febrero, 2009 a las 4:26 pm

    Muy util para iniciarse, muchas gracias

    Responder
  9. anonymous dice:
    1 junio, 2009 a las 3:22 pm

    Hola…. mi nombre es Luis Echarry y soy de Venezuela, estoy comenzando a trabajar en pag. web con Sharepoints, ASP.net y C# …… sugiero que por favor se cree un video de lo básico para crear webpart….. este articulo esta muy bueno…gracias

    Responder
  10. anonymous dice:
    22 julio, 2009 a las 12:53 am

    Es un excelente articulo, me ha servido. gracias y saludos
    Josué Miguez S.

    Responder
  11. anonymous dice:
    17 diciembre, 2009 a las 9:04 pm

    Me manda el mensaje que dice «Failure adding assembly to the cache:Unknown Error», ¿que sera?

    Responder
  12. anonymous dice:
    21 enero, 2010 a las 4:10 pm

    ya agregue eso tal y como dice el articulo me aparece en la lista que quiero pero al mandarlo impriminr me aparece el siguiente error Exception from HRESULT: 0x80131047 y ya no se que me falte

    Gracia

    Responder
  13. anonymous dice:
    29 abril, 2010 a las 6:48 pm

    Vamos a ver, he instalado sharepoint en un windows vista, y con visual studio 2008 he creado un webpart «hola mundo», vs2008 tiene una opcion de implementar, le doy a esa opcion, y la primera vez crea en la carpeta bin del proyecto un .bat y unos xml, ejecuntando como administrador ese setup.bat la primera vez lo «instala», voy a sharepoint y lo puedo seleccionar de la lista de webparts y funciona estupendamente, lo malo, es que cuando modifico y vuelvo a compilar e implementar me da el error «Error 1 Referencia a objeto no establecida como instancia de un objeto.» o si no, un error relacionado con que la carpeta con nombre de webpart ya existe, vamos que me gustaria saber como eliminar un webpart totalmente para poder modificar porque sino voy listo. hablo desde la mas absoluta ignorancia, espero que alguien me rescate de esta ignorancia.

    Gracias

    Responder

Deja un comentario Cancelar respuesta

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

← Previous Post Next Post →

Tags

async Back best practices

Entradas recientes

  • Video de mi charla en la #dotNetSpain2016
  • I’m back. Miss me?
  • Office365 actualizado a 2013 para nuevas suscripciones
  • Serializar listas genéricas en aplicaciones WinRT
  • [TPL] Problemas de concurrencia

Comentarios recientes

  • Darling Chavez en Tip: Mostrar objetos relacionados en DevExpress GridControl
  • Alexander en [TPL] Problemas de concurrencia
  • cristinakity en Funciones escalares en TSQL, JOINS, CROSS APPLY, y la madre que parió al topo.
  • cristinakity en Funciones escalares en TSQL, JOINS, CROSS APPLY, y la madre que parió al topo.
  • anonymous en HowTo: Crear una pantalla de inicio (splash screen)

Archivos

  • marzo 2016
  • marzo 2013
  • octubre 2012
  • septiembre 2012
  • agosto 2012
  • febrero 2012
  • diciembre 2011
  • noviembre 2011
  • octubre 2011
  • septiembre 2011
  • agosto 2011
  • junio 2011
  • mayo 2011
  • abril 2011
  • febrero 2011
  • enero 2011
  • diciembre 2010
  • noviembre 2010
  • octubre 2010
  • agosto 2010
  • julio 2010
  • marzo 2010
  • febrero 2010
  • enero 2010
  • diciembre 2009
  • noviembre 2009
  • octubre 2009
  • septiembre 2009
  • agosto 2009
  • julio 2009
  • junio 2009
  • mayo 2009
  • abril 2009
  • marzo 2009
  • febrero 2009
  • enero 2009
  • diciembre 2008
  • noviembre 2008
  • octubre 2008
  • septiembre 2008
  • agosto 2008
  • julio 2008
  • junio 2008
  • mayo 2008
  • abril 2008
  • marzo 2008
  • febrero 2008
  • enero 2008
  • diciembre 2007
  • noviembre 2007
  • octubre 2007
  • septiembre 2007
  • agosto 2007
  • abril 2007
  • febrero 2007
  • enero 2007

Categorías

  • .NET
  • C#
  • Channel9
  • Evento
  • Personal
  • Videos

Meta

  • Acceder
  • RSS de las entradas
  • RSS de los comentarios
  • WordPress.org
About This Site

A cras tincidunt, ut tellus et. Gravida scel ipsum sed iaculis, nunc non nam. Placerat sed phase llus, purus purus elit.

Archives Widget
  • January 2010
  • December 2009
  • November 2009
  • October 2009
Categories
  • Entertainment
  • Technology
  • Sports & Recreation
  • Jobs & Lifestyle
Search
  • facebook
  • twitter
  • rss

Powered by WordPress  |  Business Directory by InkThemes.

This site uses cookies: Find out more.