Silverlight DataGrid DevExpress y WCF Service

Hola,

Hace poco me hablaron del datagrid de DevExpress y tras ver los tutoriales y jugar un poco con él creo que uno de los controles más interesantes que se pueden encontrar para Silverlight.

Entre las funciones que ofrece destaco:

  1. Ordenaciones automáticas tanto de datos como de orden de columnas.
  2. Totalizaciones, sumatorios, medias,… siempre que el tipo de dato de la columna sea numérico.
  3. Agrupaciones de Rows a partir de una columna. Por ejemplo agrupar todas las personas por nacionalidad dentro del grid.
  4. Variedad en tipos de columna.

El siguiente ejemplo muestra como utilizar este grid. Aprovecharé para dejar un ejemplo de invocaciones a WCF Services desde un control Silverlight sin entrar en detalle de cómo crear el servicio y qué errores comunes suelen ocurrir durante este proceso (Como diría Conan: “Pero esa ya es otra historia”)

Para seguir el ejemplo previamente debemos descargar el control AgDataGrid de la página DevExpress e instarlo en nuestra máquina.

Creación del servicio WCF

Creamos un proyecto de tipo ClassLibrary para almacenar nuestras entidades y un proyecto WCF Service application para crear los servicios.

En la siguiente imagen se puede ver la entidad Persona/Personas y el servicio SvcPersonas con una operación RecuperarTodos.

image

 

 

 

 

 

 

 

 

Una vez compilado el servicio está listo para ser invocado:

image

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Creación de proyecto Silverlight

Se añade a la solución un proyecto de tipo “Silverlight Application” y se indica que queremos añadir un proyecto de tipo Asp.net Web para interactuar con los controles creados en Silverlight.

image

 

 

 

 

 

 

 

 

 

 

Añadir referencia en el proyecto Silverlight a la dll AgDataGrid instalada previamente.

Editar la página Page.xaml y añadir el control. En el ejemplo definiremos un grid con dos columnas: Nombre y apellido.

image

 

 

 

 

 

 

Añadimos una “Service Reference” en el proyecto de Silverlight al servicio SvcPersonas creado anteriormente.

La solución quedará de la siguiente forma.

image

 

 

 

 

 

 

 

 

 

 

 

 

En el codebehind de Page.xaml invocamos al servicio e informamos el datasource del datagrid con la entidad resultante de la operación. Se debe tener en cuenta que se hará una llamada asíncrona al servicio e informaremos el datasource en el evento InvokeCompleted.

image

 

 

 

 

pd: En la llamada al servicio desde el control Silverlight podemos tener el siguiente error

“An error occurred while trying to make a request to URI ‘http://localhost/Servicios/Personas.svc’. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. Please see the inner exception for more details.”

Aquí dejo el link con la explicación/solución: Error cross_domain

Finalmente el resultado es el siguiente:

Se puede ver que hay ordenación de datos y se permite al usuario modificar el orden de columnas.

clip_image001

Con el ratón arrastramos el Header (Apellidos) a la zona de agrupación. La grid agrupa las filas por el filtro de agrupación arrastrado. Además las filas se pueden expandir o contraer.

clip_image001[5]clip_image001[7]

Permite tener un Footer con cálculos de totales, medias… (Imagen extraída de la web de DevExpress)

clip_image001[9]

En resumen, podemos utilizar este grid de forma sencilla y conseguir funcionalidad que está genial y no trae los controles standard que utilizamos normalmente. Además este control es Free y solo pide registro en la web. “AgDataGrid Suite is available to you for free with FULL SOURCE CODE.”

Aquí dejo el código fuente del ejemplo para que lo podáis probar y jugar con el grid. Se debe descargar previamente el software de la página del DevExpress.

Saludos, Garrin.

2 respuestas a Silverlight DataGrid DevExpress y WCF Service

  1. Ariel dice:

    Hola la dataGrid es uso libre y gratuito?.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: