lunes, 12 de julio de 2010

Silverlight + Sharepoint 2010 + Listas

En esta entrada voy a mostrar como se obtiene una lista dado su nombre en Sharepoint 2010 utilizando silverlight y el nuevo modelo de objetos cliente, me ha resultado bastante interesante la facilidad con la que se pueden crear webparts y aplicaciones para Sharepoint 2010 con silverlight.
Lo primero que se debe tener en cuenta es que las aplicaciones de silverlight que deseen interactuar contra listas y cualquier objeto del modelo de objetos de sharepoint lo deben hacer o mediante la dll Microsoft.Sharepoint.Client.Silverlight o mediante servicios WCF+RIA, ya que no es posible utilizar la dll Microsoft.Sharepoint que se usaba en Mosss2007 con aplicaciones silverlight.
Para trabajar con silverlight en Sharepoint:

1. Crear un proyecto de tipo Silverlight Application y referenciar la dll Microsoft.Sharepoint.Client.Silverlight que se encuentra ubicada en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\ClientBin.

2. Incluir los namespaces Microsoft.Sharepoint.Client.Silverlight y Microsoft.Sharepoint.Client.Silverlight.Runtime en los archivos que contendrán clases que harán referencia al modelo de objetos de Sharepoint.

3. Incluir la siguiente linea de código en el método Application_Startup de nuestra solución "ApplicationContext.Init(e.InitParams,SyncronizationContext.Current)", antes de la linea "this.RootVisual = new MainPage()", esto nos permitirá hacer referencia a los parametros que se envian desde sharepoint a nuestra aplicación silverlight al momento de ser instanciada.

4. A continuación hacemos referencia a nuestro sitio y listas mediante los objetos que nos proporciona el namespace Microsoft.Sharepoint.Client.Silverlight:

Web _web = null;
List _lista = null;

ClientContext context = new ClientContext(ApplicationContext.Current.Url);
_web = context.Web;
_lista = _web.Lists.GetByTitle("MyList");
context.Load(_lista);
context.ExecuteQueryAsync(OnSuccedQuery,null);

5. Los llamados al modelo de objetos de Sharepont 2010 para silverlight se ejecutan de forma asincronica, para los que alguna vez trabajaron con php, ajax y el objeto XmlHttpRequest, es la misma figura se ejecuta una consulta asincronica y se espera la respuesta de la consulta en un metodo en nuestro caso el método se llama OnsuccedQuery.

void OnsuccedQuery(object sender, ClientRequestSucceededEventArgs args)
{
Dispatcher.BeginInvoke(() =>
{
MessageBox.Show(_lista.Id);
});
}

Solo en este método podemos hacer referencia a los atributos y los métodos del objeto _lista ya que es solo después de que se ejecuta el llamado asincronico que este objeto se carga, notese que si antes del llamado al método ExecuteQueryAsync trataramos de obtener el nombre de la lista mediante _lista.Name, obtendriamos un error durante la ejecución ya que en ese punto el objeto _lista es nulo.

6. Finalmente para la instalación en sharepoint se debe crear una librería de documentos en Sharepoint y subir el archivo .XAP que obtenemos al compilar nuestra solución silverlight, una vez publicado nuestro XAP procedemos a usar la nueva webpart de Sharepoint 2010 que nos permite visualizar aplicaciones Silverlight la ponemos en la pagina que deseemos y le configuramos la url del archivo xap que subimos previamente a la librería y tendremos nuestro webpart silverlight en nuestros sitios de Sharepoint 2010.

No hay comentarios:

Publicar un comentario