Este blog ha sido creado con el objetivo de almacenar información de temas referentes a la plataforma de sharepoint y tecnologias .Net.
jueves, 29 de julio de 2010
Value does not fall within the expected range !!!!!!
Este error que como lo pueden notar es muy descriptivo me ha hecho perder más de cuatro horas del día de hoy, se me presento al momento de generar de forma dinámica el contenido de un AccordionItem al cuando este se esta expandiendo pero no se preocupen que de igual forma se puede presentar en combobox y cualquier objeto que contenga una colección de objetos hijos de tipo FrameWorkElement que se desee poblar de forma dinámica, bueno regresando al origen del error este se me presentaba en el segundo evento de expansión de cualquier AccordionItem y se da por el hecho de que el árbol de elementos de silverlight no admite objetos con el mismo nombre o más de un objeto sin nombre, finalmente para solucionarlo tuve que poner un nombre dinámico compuesto por la hora actual en la cual se crea el objeto que se va adicionar en la pagina silverlight, realmente el error es ciertamente valido lo que no ayuda mucho es el mensaje del error "Value does not fall within the expected range", no sería mejor que dijese "Duplicate Object Name" o algo así ?
miércoles, 28 de julio de 2010
Debug de webparts silverlight con visual studio 2010 y Sharepoint 2010
En este post mostrare como es posible mediante visual studio 2010 ejecutar un paso a paso del código de los webparts desarrollados en Silverlight, para ello debemos:
Crear nuestro proyecto de tipo silverlight application en el cual crearemos el webpart que deseamos instalar en sharepoint, recordar que para que una aplicación silverlight obtenga acceso al contexto de datos del sitio donde se ejecuta, es decir para que desde nuestro webpart silverlight podamos tener acceso a las listas y sitios debemos adicionar la siguientes lineas en el metodo Application_StartUp del archivo App.Xaml.cs.

Creamos un proyecto de tipo Blank Sharepoint Project.

3. Creamos un modulo al interior de nuestro proyecto sharepoint, basicamente los modulos nos permiten copiar archivos en nuestros sitios al momento de la activación de la solucion que lo contiene, en nuestro caso usaremos un modulo para copiar en una libreria de sharepoint el archivo xap que es lo que resulta de compilar el proyecto de silverlight creado en el punto 1, esto nos permitira al momento de activar la solución desde visual studio atacharnos de forma automatica al proceso de W3P y en consecuencia poder hacer un paso a paso de lo que sucede en nuestro webpart silverlight, para ello seguir los pasos descritos a continuación.
Crear el objeto modulo al interior del proyecto sharpoint creado en el punto anterior.

Eliminar el archivo de prueba que se crea en el modulo por defecto.
Adicionar una referencia desde el modulo al proyecto silverlight que creamos en el punto 1, para ello nos vamos a las propiedades del modulo y seleccionamos la opción proyect output references.

En la ventana de propiedades que se despliega seleccionamos la opción adicionar y seguidamente seleccionamos el proyecto de silverlight que contiene la webpart desarrollada en la propiedad project name y en la opción deployment type element file.

Ingresamos las siguientes lineas en el archivo Elements.xml

Este archivo contiene los archivos que deseamos incluir en nuestro sitio de sharepoint al momento de la instalación de una caracteristica, solución o webpart es muy util ya que mediante el podriamos subir hojas de estilos o archivos necesarios para el funcionamiento de nuestros aplicativos en sharepoint en nuestro caso lo utilizaremos para subir el archivo xap a una libreria de sharepoint y atacharnos automaticamente al proceso de sharepoint al momento de instalar la solución desde visual studio 2010, como pueden ver el tag module contiene una propiedad llamada url, esta propiedad contiene el nombre de la libreria de sharepoint en la cual vamos a hospedar el archivo xap generado por el proyecto de silverlight al momento de su compilacion, la propiedad path debe contener el nombre del modulo seguido del nombre del archivo xap y la propiedad url del tag file debe contener el nombre con el que quedara el archivo cuando sea copiado a la libreria de sharepoint.
Por ultimo debemos activar en el proyecto de sharepoint el debug para aplicaciones silverlight esto lo hacemos dirigiendonos a las propiedades del proyecto de sharepoint al tag que dice sharepoint y marcando el check que dice enable silverlight debuging.

Con esta configuración podremos llevar acabo un paso a paso de nuestras aplicaciones desarrolladas en silverlight para sharepoint, bastaria con ejecutar el proyecto sharepoint una vez lo hacemos visual studio publica el archivo xap del proyecto silverlight en la libreria que definimos en el archivo Elements.xml y nos abre un browser con nuestro sitio sharepoint en este browser podremos adicionar un webpart de tipo silverlight y referenciar desde este el archivo xap que visual studio publico en la libreria, al usar la webpart de silverlight y marcar puntos de interrupción en nuestro codigo de visual studio podremos hacer seguimiento a la ejecución de nuestra webpart.
Crear nuestro proyecto de tipo silverlight application en el cual crearemos el webpart que deseamos instalar en sharepoint, recordar que para que una aplicación silverlight obtenga acceso al contexto de datos del sitio donde se ejecuta, es decir para que desde nuestro webpart silverlight podamos tener acceso a las listas y sitios debemos adicionar la siguientes lineas en el metodo Application_StartUp del archivo App.Xaml.cs.
Creamos un proyecto de tipo Blank Sharepoint Project.
3. Creamos un modulo al interior de nuestro proyecto sharepoint, basicamente los modulos nos permiten copiar archivos en nuestros sitios al momento de la activación de la solucion que lo contiene, en nuestro caso usaremos un modulo para copiar en una libreria de sharepoint el archivo xap que es lo que resulta de compilar el proyecto de silverlight creado en el punto 1, esto nos permitira al momento de activar la solución desde visual studio atacharnos de forma automatica al proceso de W3P y en consecuencia poder hacer un paso a paso de lo que sucede en nuestro webpart silverlight, para ello seguir los pasos descritos a continuación.
Crear el objeto modulo al interior del proyecto sharpoint creado en el punto anterior.
Eliminar el archivo de prueba que se crea en el modulo por defecto.
Adicionar una referencia desde el modulo al proyecto silverlight que creamos en el punto 1, para ello nos vamos a las propiedades del modulo y seleccionamos la opción proyect output references.
En la ventana de propiedades que se despliega seleccionamos la opción adicionar y seguidamente seleccionamos el proyecto de silverlight que contiene la webpart desarrollada en la propiedad project name y en la opción deployment type element file.
Ingresamos las siguientes lineas en el archivo Elements.xml
Este archivo contiene los archivos que deseamos incluir en nuestro sitio de sharepoint al momento de la instalación de una caracteristica, solución o webpart es muy util ya que mediante el podriamos subir hojas de estilos o archivos necesarios para el funcionamiento de nuestros aplicativos en sharepoint en nuestro caso lo utilizaremos para subir el archivo xap a una libreria de sharepoint y atacharnos automaticamente al proceso de sharepoint al momento de instalar la solución desde visual studio 2010, como pueden ver el tag module contiene una propiedad llamada url, esta propiedad contiene el nombre de la libreria de sharepoint en la cual vamos a hospedar el archivo xap generado por el proyecto de silverlight al momento de su compilacion, la propiedad path debe contener el nombre del modulo seguido del nombre del archivo xap y la propiedad url del tag file debe contener el nombre con el que quedara el archivo cuando sea copiado a la libreria de sharepoint.
Por ultimo debemos activar en el proyecto de sharepoint el debug para aplicaciones silverlight esto lo hacemos dirigiendonos a las propiedades del proyecto de sharepoint al tag que dice sharepoint y marcando el check que dice enable silverlight debuging.
Con esta configuración podremos llevar acabo un paso a paso de nuestras aplicaciones desarrolladas en silverlight para sharepoint, bastaria con ejecutar el proyecto sharepoint una vez lo hacemos visual studio publica el archivo xap del proyecto silverlight en la libreria que definimos en el archivo Elements.xml y nos abre un browser con nuestro sitio sharepoint en este browser podremos adicionar un webpart de tipo silverlight y referenciar desde este el archivo xap que visual studio publico en la libreria, al usar la webpart de silverlight y marcar puntos de interrupción en nuestro codigo de visual studio podremos hacer seguimiento a la ejecución de nuestra webpart.
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.
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.
viernes, 9 de julio de 2010
Webparts + Shrepoint 2010 + Visual Studio 2010
Hace un par de meses he tenido un par de requerimientos en los cuales he tenido que migrar una serie de webparts de MOSSS 2007 a Sharepoint 2010, para lo cual he utilizado como entorno de trabajo visual studio 2010 y he de decir que me encontrado con una gran cantidad de mejoras en lo que se relaciona a desarrollo con Sharepoint, esta nueva versión a incluido plantillas para la creación de Features las cuales traen toda la estructura necesaria para desarrollar caracteristicas de una forma amigable algunas de las mejoras que he podido apreciar son las siguientes:
- Mapeo directo a nuestra solución de carpetas como Templates,Layouts y controltemplates las cuales permiten facílmente ubicar archivos como controles ascx en sitios visible desde cualquier pagina en un sitio de sharepoint.
- Ahora mediante las opciones deploy y retract adicionadas en el menu contextual del proyecto instalar o desintalar nuestras features o webparts desde visual studio 2010.
- Es posible en esta nueva versión hacer debug de los webparts sin necesidad de attacharse al proceso de Sharepoint, simplemente con la ejecución del proyecto se hace posible hacer un paso a paso de la ejecución de los webparts.
- La inclusión de codigo administrado para la subscripción a los eventos activacion, deploy y desactivacion de las caracteristicas se logra mediante simple clic derecho sobre la caracteristica en la solucion y luego la selección de la opción de adicionar receptor de evento, obviando la necesidad de tener que crear ensamblados aparte !
Estas son algunas de las mejoras que he podido encontrar en esta nueva versión Sharepoint no he nombrado la facilidad queda para el desarrollo de webparts con Silverlight esto lo haré en el siguiente post, les dejo la primera webpart que migre de 2007 a 2010 es una sencilla pero muy util webpart que permite graficar las respuestas en una encuesta previamente configurada la puedes descargar en el siguiente link, hasta una próxima oportunidad
- Mapeo directo a nuestra solución de carpetas como Templates,Layouts y controltemplates las cuales permiten facílmente ubicar archivos como controles ascx en sitios visible desde cualquier pagina en un sitio de sharepoint.
- Ahora mediante las opciones deploy y retract adicionadas en el menu contextual del proyecto instalar o desintalar nuestras features o webparts desde visual studio 2010.
- Es posible en esta nueva versión hacer debug de los webparts sin necesidad de attacharse al proceso de Sharepoint, simplemente con la ejecución del proyecto se hace posible hacer un paso a paso de la ejecución de los webparts.
- La inclusión de codigo administrado para la subscripción a los eventos activacion, deploy y desactivacion de las caracteristicas se logra mediante simple clic derecho sobre la caracteristica en la solucion y luego la selección de la opción de adicionar receptor de evento, obviando la necesidad de tener que crear ensamblados aparte !
Estas son algunas de las mejoras que he podido encontrar en esta nueva versión Sharepoint no he nombrado la facilidad queda para el desarrollo de webparts con Silverlight esto lo haré en el siguiente post, les dejo la primera webpart que migre de 2007 a 2010 es una sencilla pero muy util webpart que permite graficar las respuestas en una encuesta previamente configurada la puedes descargar en el siguiente link, hasta una próxima oportunidad
Suscribirse a:
Comentarios (Atom)