| Una vez que nuestra aplicación web esta configurada y exponiendo los datos desde la base de datos, ahora si veremos como consumir el servicio que nos ofrece y como mostrar datos en nuestra aplicación Silverlight. | Indice: Introducción (Parte 1) Obtener datos desde la BD (Parte 2) |
Aplicación Silverlight
Como ya lo hemos comentado, la aplicación silverlight que el template ‘Silverlight Business Application’ no entrega ya cuenta con el ‘Framework de Navegación’. En esta ocasión estaremos trabajando únicamente en nuestra página ‘Home.xaml’.
Origen de Datos de Dominio (Domain Data Source)
Lo primero que necesitamos agregar es un control llamado DomainDataSource el cual viene incluido en los asemblies que Ria Services nos entrega.
Dll:System.Windows.Controls.Ria
Namespace: xmlns:riacontrols=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Ria”
Namespace: xmlns:ds=”clr-namespace:BusinessApplication1.Web.Services”
Este control será el encargado de contener los datos que la aplicación web expone a traves de la Clase de Servicio de Dominio. Le pondremos un nombre (x:Name=”MyData”), indicaremos la cantidad de registros a pedir en cada llamada (LoadSize=”20″), que queremos obtenga el primer bloque de registros cuando sea cargado (AutoLoad=”True”), y que utilice la función de GetAlbums (QueryName=”GetAlbums”)
También le indicaremos que el Origen de Datos será nuestro Contexto de Dominio desde la aplicación web.
|
1 2 3 4 5 6 7 8 |
<riacontrols:DomainDataSource x:Name="MyData"
LoadSize="20"
AutoLoad="True"
QueryName="GetOrders">
<riacontrols:DomainDataSource.DomainContext>
<ds:RiaDomainContext />
</riacontrols:DomainDataSource.DomainContext>
</riacontrols:DomainDataSource> |
*Nota: como este es un control no visible, lo podemos poner justo despues de donde se define el grid principal de la página.
Mostrando los datos en un DataGrid
Una vez que tenemos los datos en nuestro DomainDataSource, estos los podemos mostrar en un control DataGrid.
Dll:System.Windows.Controls.Data
Namespace:xmlns:datagrid=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data”
Nuestro DataGrid tendra un nombre (x:Name=”OrdersGrid”); será solamente de lectura (IsReadOnly=”True”); y lo más importante, el origen de datos estará enlazado con nuestro Domian Data Source (ItemsSource=”{Binding ElementName=MyData, Path=Data}”)
|
1 2 3 4 |
<datagrid:DataGrid x:Name="OrdersGrid"
MinHeight="100"
IsReadOnly="True"
ItemsSource="{Binding ElementName=MyData, Path=Data}" /> |
Ejecutando la apliación
Y listo, ahora si ya tenemos nuestra primera aplicación Ria Services lista para ser ejecutada.
Siguientes post…
Aunque ya tenemos una aplicación que correo sobre Ria Services, apenas estamos calentando motores, en los siguientes post estaremos hablando de cómo hacer paginación de los datos mostrado, cómo crear filtros, cómo mostrar los detalles de un registro, etc, etc, etc…




12 comments
Sebastian Hernandez says:
Feb 21, 2010
Hola, una consulta cuando agrego el DomainDataSource en home.xaml me dice “La propiedad ‘Content’ está establecida más de una vez.” Le he buscado la vuelta pero no me doy cuenta soy nuevo en esto. Gracias
Arturo Molina says:
Feb 23, 2010
Hola Sebastian, la propiedad Content puede estar en diferentes elementos. El error más común es ponerla repetida en un botón: http://msdn.microsoft.com/es-es/library/bb546964.aspx
O pudiera ser que pusiste el DomainDataSource dentro de otro control? Aunque puedes ponerlo practicamente donde quieras, la recomendación es ponerlo como el primer elemento de tu LayoutRoot
Si este no es el caso, crees que podrías mandarnos tu XAML para revisarlo? Puedes mandarlo a Arturo.Molina o Jorge.Levy arroba ligasilverlight.com
Roque says:
Mar 31, 2010
Hola, tengo una duda un tanto obvia a mi parecer como agregas espacios de nombres del CLR “ds”, yo lo intento de hacer de la siguiente manera
xmlns:ds=”clr-namespace:SANI.Web”
Pero visual studio me dice que esta referencia no se encuentra en el ensamblado, Mi proyecto se Silverlight se llama SANI y mi proyecto web SANI.Web que puedo hacer?
Roque says:
Mar 31, 2010
Solo me faltaba recompilar jejeje al final quedo bien y quedo asi
xmlns:ds=”clr-namespace:SANI.Web.Services”
admin says:
Apr 3, 2010
Hola Roque, intenta recompilar toda la solución ya que a veces Visual Studio no reconoce todas las clases presentes sino hasta que se compilan.
admin says:
Apr 3, 2010
Hola Roque,
Así es, como mencioné en el comentario anterior Visual Studio a veces no reconoce las clases presentes (sobre todo en el editor de XAML) sino hasta que se compilan de manera explícita. Qué bueno que se solucionó!!!
Rafa says:
Jun 3, 2010
Saludos.
Estoy intentando hacer esta aplicación pero cuando llego al paso en el que hay que crear el Domain Data Source me quedo atascado ya que no tengo la dll “System.Windows.Controls.Ria” y no puedo agregarla al proyecto tampoco ya que no la tengo en ningún sitio de mi pc. Tampoco puedo agregar “xmlns:ds=”clr-namespace:TiendaMusica.Web.Services”” ni “xmlns:riacontrols=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Ria”” (yo tengo “my=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices”") por la misma razón, no está en mi pc.
Estoy atascado y me vendría muy bien poder seguir con la aplicación por lo que ruego una ayuda.
Gracias de antemano.
Arturo Molina says:
Jun 3, 2010
Hola Rafa, tu problema con los nombres de espacio pueden ser por los cambios que uso de entre la versión Beta y RC de RIA Services, puedes bajar un documento con todos los cambios hechos a los nombres de espacio en esta dirección: http://code.msdn.microsoft.com/RiaServices/Release/ProjectReleases.aspx?ReleaseId=3570
Vamos a presionar a Jorge para que actualice sus artículos
Rafa says:
Jun 7, 2010
Gracias por la respuesta Arturo.
Me ha venido de perlas ese archivo pero sigo teniendo el problema en lo que él llama “xmlns:ds=”clr-namespace:BusinessApplication1.Web.Services” aunque en mi caso sería “xmlns:ds=”clr-namespace:TiendaMusica.Web.Services” por lo que la linea de “” me da fallo.
Gracias de nuevo y a ver si ya puedo solucionar esto =)
Un saludo!
PD: Esa presión de la que hablas estaria bien xD
Chiquiriki says:
Jul 5, 2010
Buenas!!
Estoy super atascada y no se si me podréis ayudar.Os cuento:
He creado un proyecto tipo ” Silverlight Business Application”. En el proyecto web, he creado un modelo de datos mediante el elemento ADO.NET Entity Data Model. Este modelo tiene una tabla TbConsultor.
Luego he creado el servicio dentro de la carpeta Services con “Domain Service Class” y lo he llamado ConsultorService.
En el proyecto Silverlight, dentro de un archivo Home.xaml, he creado un DomainDataServices, lo he conectado al contexto y lo intento mostrar dentro de un datagrid.
Cuando compilo todo correcto, pero cuando ejecuto, no se muestran los datos en el navegador.
El código es:
Antes de este código estoy declarando:
xmlns:riaControls=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices”
xmlns:web=”clr-namespace:PruebaServicio.Web.Services”
xmlns:data=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data”
Muchas gracias de ante mano, estoy haciendo el proyecto fin de carrera y no avanzo!!!
chao
Arturo Molina says:
Jul 6, 2010
Que tal Chikiriqui. Es difícil saber sin tener el código en mano. Puedes intentar user Fiddler, es una herramienta que te permite monitorear el tráfico que hay en tu computadora. Esto con el objetivo de ver en donde es que la aplicación no está funcionando como debe. Si esto no te ayuda, mándame un correo a arturo@ligasilverlight.com
rodrigo.diaz says:
Jul 18, 2010
Chiquiriki, nos puedes mandar el mensaje de error para ver qué puede ser?? Es una app. Fuera del Navegador o Dentro del Navegador? Estás usando el Stack HTTP del Browser o del Cliente?
O si ya lo resolviste, por favor avísanos qué fue para poder tener en el radar esa solución!
Gracias y salu2!