SharePoint 2010 & Office 365: Uso de la OWA WebPart programáticamente!

De nuevo una pregunta, que ya surgió en tiempos de SharePoint 2007, en torno a la extensibilidad de la plataforma es la de si podemos de alguna forma usar WebParts existentes dentro de nuestras propias WebParts para poder por ejemplo configurar de forma dinámicas las propiedades que expone en su panel de herramientas. La respuesta es que sí, así por ejemplo podremos usar dentro de nuestra WebParts otras existentes por defecto como el PageViewer o la OWA WebPart entre otras. En torno a este tema se pueden encontrar varios artículos bastante explicativos como:

Algo importante, y de ahí este post, es que usar un WebPart de SharePoint dentro de nuestra WebPart en la práctica implica que estamos usando un control propio de SharePoint  en nuestra WebPart. La implicación de este echo es que no podremos usar WebParts existentes dentro de WebParts que vayamos a desplegar en modo Sandbox ya que a día de hoy sólo se permiten usar controles ASP.NET y no controles propios de SharePoint. Por lo tanto, no tendremos este escenario de uso de WebParts existentes en SharePoint Online (SPO) dentro de Office 365 (al menos de momento). Por lo tanto, lo primero que tendremos que hacer en nuestra solución es asegurarnos que el tipo de despliegue para la misma es SandBox:

image

A partir de aquí, usar por ejemplo la WebPart de OWA de SharePoint 2010 (Server) es tan sencillo como:

   1: using System;

   2: using System.ComponentModel;

   3: using System.Web;

   4: using System.Web.UI;

   5: using System.Web.UI.WebControls;

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

   7: using Microsoft.SharePoint;

   8:  

   9:  

  10: using Microsoft.SharePoint.Portal.WebControls;

  11:  

  12: using Microsoft.SharePoint.WebControls;

  13:  

  14: namespace UCOWADemo.OWAWebPart

  15: {

  16:     [ToolboxItemAttribute(false)]

  17:     public class OWAWebPart : WebPart

  18:     {

  19:         protected override void CreateChildControls()

  20:         {

  21:             Label lblDatos = new Label();

  22:  

  23:             var owaIPinbox = new OWAInboxPart {

  24:                 MailboxName="mycorreo@miempresa.com",

  25:                 OWAServerAddressRoot = "https://<Direccion_OWA>"

  26:             };

  27:  

  28:             this.Controls.Add((Control)owaIPinbox);

  29:         }

  30:     }

  31: }

Y hasta aquí llega este artículo sobre como usar WebParts existentes de SharePoint en nuestras propias WebParts.