This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

Enlaces Recomendados

September 2011 - Artículos

SharePoint 2010 & Azure: Integración de servicios mediante BCS (II)!

Como continuación al post sobre como integrar servicios de Azure a través del BCS en SharePoint 2010, en esta ocasión vamos a ver como podemos mostrar los datos que expone el External Content Type (ECT) creado a partir del servicio WCF creado en Azure, pero usando una XslListViewWebPart:

  • En SharePoint Designer 2010 creamos o editamos una página de WebParts.
  • Seleccionamos en la página una de las zonas disponibles en la página, pulsamos sobre “Data View”  y seleccionamos la lista externa basada en el servicio WCF que creamos en el artículo anterior.
  • De esta forma se genera la correspondiente XsltListViewPart que recoge los datos de la lista externa.
  • Guardamos los cambios realizados en la página y comprobamos que se muestran los datos en la misma.
image image image

Publicado 13/9/2011 19:04 por Juan Carlos González Martín | 1 comment(s)

Office 365: Requerimientos de software para trabajar con la plataforma!

Cuando estamos trabajando o tenemos intención de hacerlo con Office 365, es importe tener muy claros los requisitos de software necesarios para tener una experiencia completa de usuario y sacarle un partido máximo a la plataforma de productividad de Microsoft en la nube. En este sentido, en la ayuda de Office 365 disponemos de las correspondientes secciones en las que se indican los requerimientos mínimos de SW en cuanto a versión de sistema operativo navegador:

image

Publicado 12/9/2011 9:44 por Juan Carlos González Martín | 1 comment(s)

Archivado en:

Evento: Materiales de mis charlas en el 5º Simposio Latinoamericano de SharePoint en Costa Rica!

Ya ha pasado más de una semana desde que tuvo lugar el 5º Simposio Latinomareican de SharePoint celebrado en Costa Rica el pasado 31 de agosto y en el que tuve el placer de participar gracias a Ricardo Muñoz y Vielka Rojas. Tengo que felicitar a ambos y a su equipo por la excelente labor realizada en la organización del evento y agradecer a los más de 300 asistentes su presencia en el mismo, que espero cumpliese con sus expectativas. También quiero dar las gracias a los patrocinadores del evento, y en especial a Krasis, por el apoyo brindado y la apuesta por el evento. Respecto a mi participación en el evento, se tradujo en dos ponencias (una de ellas compartidas con Gustavo Vélez) cuyos materiales podéis descargar desde este enlace:

Finalmente os dejo algunas de las imágenes del simposio, desde el bootcamp de desarrollo que tuve el placer de impartir con Gustavo, hasta las horas previas de preparación de la logística y la conferencia en sí.

DSCF1228 P8310001 P8310015
IMAG0860 IMAG0872 IMAG0890
  DSCF1231  

Publicado 11/9/2011 11:05 por Juan Carlos González Martín | con no comments

SharePoint 2010: Cambio en la estrategia de actualización!

Como os comentaba el otro día, ya tenemos disponible la cumulative update (CU) de agosto de 2010 para SharePoint 2010. Además de las soluciones que incluye dicha CU, lo interesante de la misma es que supone un cambio en la estrategia de actualización de la plataforma en lo que a SharePoint Server se refiere ya que no es neceario como ocurría con CUs previas instalar en primer lugar la CU de SharePoint Foundation y luego aplicar la de SharePoint Server…desde agosto, la CU de SharePoint Server incluirá la de SharePoint Foundation de forma que se facilita el proceso de actualización. Os dejo un par de referencias respecto a este tema:

SharePoint2010_thumb

Publicado 10/9/2011 11:24 por Juan Carlos González Martín | con no comments

Office 365: Como configurar mi cuenta de correo de Exchange Online en Outlook 2010!

Una pregunta bastante recurrente en los foros de Office 365 en castellano es la relativa a la configuración del correo electrónico de Exchange Online en Microsoft Office Outlook 2010. Como siempre, en la red ya hay varios artículos que explican paso a paso como realizar esa configuración de forma sencilla como por ejemplo el minitutorial que podéis encontrar en este artículo.

image

Publicado 9/9/2011 22:03 por Juan Carlos González Martín | 1 comment(s)

Archivado en:

Office 365: Como cambiar la dirección de envío de e-mail sin tener que cambiar el dominio!

Otra de las preguntas que han surgido estos días en los foros de Office 365 es la de si es posible cambiar la dirección de correo electrónico de envío de una cuenta de Office 365 sin realizar un cambio de dominio…la respuesta es que sí y para ello tenemos dos posibilidades:

  • La primera, a través de la interfaz de usuario nos permite cambiar el correo electrónico del usuario sin cambiar el dominio y adaptarlo a nuestras necesidades. Para poder hacer esto, tendremos que ser administradores de las suscripciones de Office 365 que tengamos disponibles y acceder a la gestión de usuarios desde el portal de administración de Office 365.
  • En el listado de usuarios, seleccionamos aquel que queremos modificar y pulsamos “Editar”.
  • En la siguiente página pulsamos sobre el enlace “Propiedades” relativo a la suscripción de usuario concreta.
image image image
  • A continuación se muestra la página de propiedades del usuario en la que podremos modificar entre otros atributos el e-mail (sin cambiar el dominio, salvo que tengamos más de uno disponible).

image

  • La segunda, y mucho más flexible, es el uso de PowerShell que nos permite cambiar de forma completa la dirección de envío siguiendo las pautas que se comentan en este post (también en este rápido tip). Como veréis en el mismo, basta con ejecutar los comandos PowerShell siguientes para conseguir el cambio de la dirección de envido de e-mail.
   1: import-module MSOnline 
   2: $LiveCred = Get-Credential 
   3: $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://pod51013psh.outlook.com/PowerShell-LiveID?PSVersion=2.0 -Credential $LiveCred -Authentication Basic -AllowRedirection 
   4: Import-PSSession $Session 
   5: Set-Mailbox  miCorreo@midominio.onmicrosoft.com -EmailAddresses SMTP:miOtroCorreo@midominio.com

Publicado 8/9/2011 23:56 por Juan Carlos González Martín | 2 comment(s)

Archivado en:

SharePoint Online: Como visualizar vistas de datos en mi sitio público (I)!

Como sabéis, en Office 365 tenemos la posibilidad de crear sitios públicos sencillos que permitan dotar a nuestra organización de presencia en Internet…estos sitios públicos permiten mostrar principalmente contenido de naturaleza estática, aunque también es posible insertar contenido más dinámico y de ahí el título de este post surgido a raíz de una pregunta planteada en los foros de Office 365: ¿Cómo muestro una vista de datos en mi sitio público? Como os podéis imaginar, esta vista de datos podría mostrar datos de una lista de SharePoint o por ejemplo de un servicio web…para el primero de los casos, se puede conseguir de forma sencilla:

  • A través de la página principal de nuestro sitio público, nos validamos.
  • Creamos una lista personalizada que completamos con algunos datos. En mi caso he creado una lista “Productos”.
  • A través de “Acciones del sitio –> Ver todo el contenido del sitio” navegamos a la página en la que se muestran las listas, bibliotecas, sitios, etc definidos bajo el sitio raíz.
image image image
  • En esta página, pulsamos el enlace “Crear”.
  • En la ventana que se abre, seleccionamos “Página –> Página de elementos web”.
  • A continuación elegimos el tipo de página a crear y especificamos como ubicación de almacenamiento la biblioteca “Páginas web”.
image image image
  • En tiempo de edición de la página creada, pulsamos sobre el enlace “Agregar elemento web”.
  • En la ventana que se abre, elegimos la sección “Listas y bibliotecas” y luego “Productos” (nuestra lista personalizada).
  • De esta forma, se muestra el listado de productos como esperábamos. Detenemos la edición de la página para que los cambios realizados se guarden.
image image image
  • Accedemos a esta página de forma anónima y comprobamos que se muestra el listado.

image

Publicado 8/9/2011 23:46 por Juan Carlos González Martín | 2 comment(s)

SharePoint 2010: Disponible la cumulative update de agosto de 2011!

Ya tenemos disponible una nueva cumulative update (CU) para SharePoint 2010 relativa en este caso al mes de agosto. Los enlaces de descarga respectivos son los siguientes:

Os recuerdo algunas recomendaciones generales respecto a esta CU:

  • La primera es que es recomendable tener aplicado el SP1 en nuestros despliegues de SharePoint.
  • La segunda, que salvo caso de extrema necesidad no es recomendable aplicar esta CU en entornos productivos. Primero la aplicamos en los entornos de desarrollo y preproducción con la idea de testearla bien y cuando estemos listos, la aplicamos en producción.

SharePoint2010_thumb

Fuente: SharePoint 2010 and August 2011 CU

Publicado 7/9/2011 10:20 por Juan Carlos González Martín | 1 comment(s)

SharePoint 2010: Trabajo programático con listas externas (I)!

De la misma forma que podemos trabajar con listas convencionales de SharePoint mediante la API, podemos trabajar con las listas de tipo externo que nos permiten integrar datos de nuestros sistemas de negocio en SharePoint. A modo de ejemplo, vamos a ver cómo acceder a los datos de una lista externa de SharePoint que muestra los datos de la BD AdventureWorksLT:

  • En Visual Studio 2010 creamos un proyecto de tipo “Empty SharePoint Project” y especificamos como tipo de despliegue “Deploy as a farm solution”.
  • Añadimos al proyecto un elemento de tipo Visual Web Part. A través del diseñador de Visual Studio 2010, añadimos un control de tipo GridView:
  • Nos vamos a la vista de código de la WebPart y añadimos directivas using a Microsoft.SharePoint y System.Data.
  • Codificamos el método Page_Load() de acuerdo al listado que se muestra a continuación.
  • Compilamos el proyecto y si no hay errores, desplegamos la WebPart en nuestro sitio de pruebas.
  • Añadimos la WebPart en una página de WebParts y comprobamos que muestra la información de la lista externa como se espera.
   1: using System;
   2: using System.Web.UI;
   3: using System.Web.UI.WebControls;
   4: using System.Web.UI.WebControls.WebParts;
   5:  
   6: //Espacios de nombres necesarios
   7: using Microsoft.SharePoint;
   8: using System.Data;
   9:  
  10: namespace SPExternalLists.SPContactosWP
  11: {
  12:     public partial class SPContactosWPUserControl : UserControl
  13:     {
  14:         protected void Page_Load(object sender, EventArgs e)
  15:         {
  16:             if (!Page.IsPostBack)
  17:             {
  18:                 using (SPSite spsSitio = SPContext.Current.Site)
  19:                 {
  20:                     using (SPWeb spwWeb = spsSitio.OpenWeb())
  21:                     {
  22:                         DataTable dtContactos = new DataTable();
  23:                         
  24:                         dtContactos.Columns.Add("CustomerID");
  25:                         dtContactos.Columns.Add("FirstName");
  26:                         dtContactos.Columns.Add("LastName");
  27:                         dtContactos.Columns.Add("CompanyName");
  28:  
  29:                         SPList splExternalList = spwWeb.Lists["Contactos"];
  30:                         SPListItemCollection splicContactosCollection = splExternalList.Items;
  31:                         foreach (SPListItem spliContacto in splicContactosCollection)
  32:                         {
  33:                             DataRow dtrContato=dtContactos.NewRow();
  34:                             dtrContato["CustomerID"] = spliContacto["CustomerID"].ToString();
  35:                             dtrContato["FirstName"] = spliContacto["FirstName"].ToString();
  36:                             dtrContato["LastName"] = spliContacto["LastName"].ToString();
  37:                             dtrContato["CompanyName"] = spliContacto["CompanyName"].ToString();
  38:                             dtContactos.Rows.Add(dtrContato);
  39:                         }
  40:                         grdContactos.DataSource = dtContactos;
  41:                         grdContactos.DataBind();
  42:  
  43:                     }
  44:                 }
  45:             }
  46:         }
  47:     }
  48: }
  • Compilamos el proyecto y si no hay errores, desplegamos la WebPart en nuestro sitio de pruebas.
  • Añadimos la WebPart en una página de WebParts y comprobamos que muestra la información de la lista externa como se espera.
image image image

Y hasta aquí llega este primer post sobre como trabajar con listas externas de forma programática.

Publicado 6/9/2011 23:45 por Juan Carlos González Martín | con no comments

SharePoint 2010: Resumen de posts (XXII)!

Como siempre , después del recopilatorio de enlaces interesantes sobre SharePoint 2010 os dejo el resumen de posts sobre la plataforma que se han publicado en el blog desde principios del mes de agosto

Capacidades

Desarrollo

IT

Recursos

Y hasta aquí llega este nueva entrega del resumen de los posts publicados en el blog del CIIN sobre plataforma SharePoint.

Publicado 5/9/2011 12:23 por Juan Carlos González Martín | con no comments

SharePoint 2010: Nuevos cursos disponibles sobre BI y Composites!

Microsoft acaba de liberar dos nuevos cursos que complementan los ya existentes y que refuerzan aún más si cabe el gran trabajo y esfuerzo que se está haciendo para documentar la plataforma. Los nuevos cursos liberados son:

SharePoint2010_thumb

Publicado 4/9/2011 23:25 por Juan Carlos González Martín | con no comments

SharePoint 2010: Recopilatorio de enlaces interesantes (XXIII)!

Con unos pocos días de retraso, ya tenéis disponible una nueva edición del recopilatorio de enlaces interesantes sobre SharePoint 2010 que han aparecido durante el último mes en los blogs especializados que suelo leer. Como siempre, espero que los recursos sean de vuestro interés.

Capacidades

Desarrollo

IT

Recursos

Publicado 4/9/2011 21:47 por Juan Carlos González Martín | con no comments

SharePoint 2010: Uso de WebParts por defecto programáticamente (I)!

Como veíamos en este artículo, cuando desarrollamos WebParts para SharePoint tenemos la posibilidad de utilizar WebParts por defecto de la plataforma como objetos dentro de las mismas, lo que abre la posibilidad de configurarlos de forma programática de acuerdo a las necesidades planteadas. En este artículo vamos a ver como podemos utilizar una WebPart de tipo XsltListViewWebPart en una WebPart de tipo visual:

  • Lo primero que haremos es crear en Visual Studio 2010 un proyecto de tipo “Empty SharePoint Project”.
  • A continuación añadimos una WebPart de tipo visual al proyecto usando el explorador de soluciones. Nuestra WebPart se compone en su parte “visual” de un control de tipo Label y de un control de tipo “DropDownList”. En este control mostraremos el listado de vistas disponibles para una cierta vista del sitio que posteriormente usaremos para configurar dinámicamente la XsltListViewWebPart a añadir.

image

  • El markup de la WebPart visual es tan sencillo como sigue:
   1: <asp:Label ID="lblVistas" runat="server" Text="Vistas Disponibles" 
   2:     Font-Bold="True"></asp:Label>&nbsp;&nbsp
   3: <asp:DropDownList ID="ddAvailableViews" runat="server" 
   4:     onselectedindexchanged="ddAvailableViews_SelectedIndexChanged">   
   5: </asp:DropDownList><br /><br /> 
  • Nos vamos al code behind del control de usuario que representa la parte visual de la WebPart y comenzamos añadiendo las siguientes directivas using:
   1: //Espacios de nombres necesarios
   2: using SPWebPartPages = Microsoft.SharePoint.WebPartPages;
   3: using Microsoft.SharePoint;
   4: using System.Data;
  • Codificamos el método Page_Load() como se muestra en el listado siguiente. Como veis, en primer lugar estamos configurando el control de tipo DropDownList para añadir las vistas de la lista Tasks del sitio de trabajo. Y a continuación configuramos un objeto de tipo XsltListViewWebPart, previamente declarado como miembro público de la clase, de manera que la vista que muestre sea la que tiene por defecto la lista Tasks.
   1: protected void Page_Load(object sender, EventArgs e)
   2: {            
   3:     if (!Page.IsPostBack)
   4:     {              
   5:         
   6:         //****************************************************************
   7:         //Configuración del combo
   8:         //****************************************************************
   9:         ddAvailableViews.AutoPostBack = true;
  10:         SPWeb spwWeb = SPContext.Current.Web;
  11:         DataTable dtDatosVistas = new DataTable();
  12:         dtDatosVistas.Columns.Add("ViewName");
  13:         dtDatosVistas.Columns.Add("ViewID");
  14:  
  15:         //Datos para completar el combo
  16:         SPList splLista = spwWeb.Lists["Tasks"];
  17:         SPViewCollection spvCollection = splLista.Views;
  18:  
  19:         foreach (SPView v in spvCollection)
  20:         {
  21:             DataRow dtrVista = dtDatosVistas.NewRow();
  22:             if (v.Title == "")
  23:                 dtrVista["ViewName"] = "Vista sin nombre";
  24:             else
  25:                 dtrVista["ViewName"] = v.Title;                  
  26:           
  27:             dtrVista["ViewID"] = v.ID;
  28:             dtDatosVistas.Rows.Add(dtrVista);
  29:         }
  30:         ddAvailableViews.DataSource = dtDatosVistas;
  31:         ddAvailableViews.DataValueField = "ViewID";
  32:         ddAvailableViews.DataTextField = "ViewName";
  33:         ddAvailableViews.DataBind();
  34:  
  35:         //****************************************************************
  36:         //Configuración de la XsltListViewWebPart
  37:         //****************************************************************
  38:         lblVistas.Text = "Vistas disponibles para la lista " +
  39:             splLista.Title;
  40:         xsltvwListViewWebPart = new SPWebPartPages.XsltListViewWebPart();
  41:         xsltvwListViewWebPart.ListId = splLista.ID;
  42:         xsltvwListViewWebPart.ViewGuid =
  43:             splLista.DefaultView.ID.ToString();
  44:         xsltvwListViewWebPart.Title = splLista.DefaultView.Title;
  45:         xsltvwListViewWebPart.AllowConnect = true;
  46:         xsltvwListViewWebPart.AllowEdit = true;
  47:         xsltvwListViewWebPart.AllowHide = false;
  48:         xsltvwListViewWebPart.AllowMinimize = false;
  49:  
  50:     }
  51: }
  • Codificamos el manejador del control DropDownList de manera que configuramos el objeto XsltListViewWebPart de acuerdo a la vista seleccionada por el usuario en el control “DropDownList”.
   1: protected void ddAvailableViews_SelectedIndexChanged(object sender, EventArgs e)
   2: {
   3:     xsltvwListViewWebPart = 
   4:         new SPWebPartPages.XsltListViewWebPart();
   5:     SPWeb spwWeb = SPContext.Current.Web;
   6:     SPList splLista = spwWeb.Lists["Tasks"];
   7:     xsltvwListViewWebPart.ListId = splLista.ID;
   8:     xsltvwListViewWebPart.ViewGuid = 
   9:         ddAvailableViews.SelectedItem.Value;
  10:     xsltvwListViewWebPart.Title = ddAvailableViews.SelectedItem.Text;
  11:     xsltvwListViewWebPart.AllowConnect = true;
  12:     xsltvwListViewWebPart.AllowEdit = true;
  13:     xsltvwListViewWebPart.AllowHide = false;
  14:     xsltvwListViewWebPart.AllowMinimize = false;           
  15: }
  • Añadimos una sobreescritura del método OnPreRender() que nos permite añadir el objeto XsltListViewWebPart como control a la WebPart cuando se hagan postbacks al servidor. Por ejemplo, cada vez que seleccionemos un vista del control DrownDownList. En cambio, este control no será añadido la primera vez que se visualice la WebPart…esto lo haremos en la clase que se encarga de añadir el control de usuario como control de la WebPart que se muestra al usuario.
   1: protected override void OnPreRender(EventArgs e)
   2: {
   3:     if (Page.IsPostBack)
   4:     {
   5:         Controls.Add(xsltvwListViewWebPart);
   6:     }            
   7: }
  • A través del explorador de soluciones editamos el archivo de código en el que está codificada la clase que representa la WebPart que realmente se muestra al usuario.

image

  • Añadimos una directiva using a Microsoft.SharePoint.WebPartPages y un objeto de tipo XsltListViewWebPart a nivel de clase.
  • Codificamos el evento CreateChildControls() de la WebPart de la siguiente forma:
   1: protected override void CreateChildControls()
   2: {
   3:     Control control = Page.LoadControl(_ascxPath);
   4:     Controls.Add(control);            
   5:     
   6:     xsltvwListViewWebPartToAdd =
   7:         ((SPOOBWebPartUserControl)control).xsltvwListViewWebPart;
   8:  
   9:     if (xsltvwListViewWebPartToAdd != null)
  10:     {
  11:         this.Controls.Add(
  12:             (xsltvwListViewWebPartToAdd));              
  13:     }            
  14: }
  • Como se deduce, únicamente estamos inicializando el objeto XsltListViewWebPart de la clase con su “igual” del control de usuario de la WebPart…lo que sucede únicamente la primera vez que se visualiza la WebPart y no se ha hecho un PostBack al servidor, de ahí la comprobación que se realiza a continuación y que nos permite añadir el objeto como control a la WebPart únicamente cuando se ha inicializado correctamente.
  • Compilamos el proyecto y desplegamos la WebPart.
  • En el sitio de trabajo creamos una página de WebParts en la que añadimos la WebPart y comprobamos que tanto el DropDownList como la XsltListViewWebPart muestran correctamente los valores inicialmente especificados.
  • Si seleccionamos una vista diferente, la XsltListViewWebPart dinámicamente cambia la vista mostrada.
image image

Para finalizar, os dejo un enlace por cortesía de mi compañero Ángel Acha en el que se muestra “el camino contrario” a la hora de configurar propiedades definidas en la WebPart en el control de usuario…pero este será tema de otro post: http://www.lamber.info/post/2010/05/21/How-do-I-create-custom-properties-in-Visual-Web-Parts.aspx.

Publicado 1/9/2011 18:08 por Juan Carlos González Martín | 1 comment(s)

Más artículos < Página anterior