Si bien en el post anterior hemos visto como hacer filtrado de datos desde el DomainService, ahora veremos como hacer esto mismo, pero ahora desde el DomainDataSource. El cual se encuentra del lado de la applicación silverlight, además de que nos permitirá hacer modificaciones a los filtros en tiempo de ejecución.
Por primera vez en esta serie de post, haremos mas que arrastar y/o seguir asistentes. En esta ocasión la codificación estará en nuestro archivo xaml. Y para poder trabajar en este tema, será necesario tener nuestro código como lo tendriamos en la parte 3 de esta serie.
WCF Ria Services V1.0 para Silverlight 4.- Índice:
Introducción (Parte 1)
Obtener datos desde la BD (Parte 2)
Mostrar datos (Parte 3)
Filtrar datos [DomainService] (Parte 4)
Filtrar datos [DomainDataSource] (Parte 5)
Texto a filtrar (preparando el filtro)
Para saber que texto es el que aplicaremos agregaremos un campo de text (TextBox) a nuestra interface al cual necesita llevar nombre (x:name)
El código quedaría como:
<TextBox x:Name="txtFilter"
Width="350" />
<sdk:DataGrid AutoGenerateColumns="False"
Height="200"
ItemsSource="{Binding ElementName=productDomainDataSource, Path=Data}"
Name="productDataGrid"
RowDetailsVisibilityMode="VisibleWhenSelected"
Width="400">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn x:Name="nameColumn"
...
Modificando el Servicio de Dominio (DomainService)
Para poder realizar los filtros será necesario agregar un Descriptor de Filtros (FilterDescriptor) a nuestro Servicio de Dominio (DomainService). Será en el FilterDescriptor donde configuraremos el tipo de operaror que el filtro utilizará (Operator="StartsWith"), así como la columna en la que se aplicará el filtro con la propiedad de PropertyPath (PropertyPath="Name"), y el valor que será utilizado como filtro, el cual en esta ocasión será un mapeo al texto del campo de texto que agregamos anteriormente (Value="{Binding ElementName=txtFilter, Path=Text}").
<riaControls:DomainDataSource AutoLoad="True"
d:DesignData="{d:DesignInstance my1:Product, CreateList=true}"
Height="0"
LoadedData="productDomainDataSource_LoadedData"
Name="productDomainDataSource"
QueryName="GetProductsQuery"
Width="0">
<riaControls:DomainDataSource.DomainContext>
<my:RiaDomainContext />
</riaControls:DomainDataSource.DomainContext>
<riaControls:DomainDataSource.FilterDescriptors>
<riaControls:FilterDescriptor Operator="StartsWith"
PropertyPath="Name"
Value="{Binding ElementName=txtFilter, Path=Text}" />
</riaControls:DomainDataSource.FilterDescriptors>
</riaControls:DomainDataSource>
Ejecutando la aplicación
Al ejecutar este applicación podremos observar que el filtro es aplicado segun vamos escribiendo en el cuadro de texto, a diferencia de cuando creamos el filtro en el DomainService, que el filtro es aplicado al presionar el boton de "Load".

9 comments
Luis Alejandro Duarte says:
Nov 26, 2010
Buenos días estoy buscando un articulo que no solamente me muestre como cargar datos con RIA SERVICE sinó como hace la modificacion de las tablas (insertar, modificar o eliminar), y la verdad que todos los articulos, videos etc son iguales, mostrando datos por este medio, podras comentarme como hacer para poder insertar datos con RIA dado que al poner la opcion de editar con el domain service y crearse los metodos de actualizacion cuando hago la instancia no se ven y no puedo realizar estas acciones.
gracias
Oscar says:
Dec 13, 2010
Excelente articulo!
me has ayudado de mucho, no hay uno que sea de filtro entre fechas?
mil gracias!!!
Luis Freyre says:
Feb 12, 2011
Yeaahh!!! excelentes tutoriales. Muchisimas gracias por la explicación. Estuve buscando muchas horas este tema y ahora lo tengo clarisimo.
Muchas gracias Jorge.
Luis
Jorge Levy says:
Feb 15, 2011
Luis, que bueno que te ha servido la información. Ya mucha gente se esta metiendo a programar en este tecnología. Espero que junto podamos extender la información sobre el tema como ya se ha venido haciendo, te invito a te des una vuelta por el blog de la liga..
Saludos.
René Quiroz says:
Mar 8, 2011
Buenos días estoy buscando un articulo que no solamente me muestre como cargar datos con RIA SERVICE sinó como hace la modificacion de las tablas (insertar, modificar o eliminar), y la verdad que todos los articulos, videos etc son iguales, mostrando datos por este medio, podras comentarme como hacer para poder insertar datos con RIA dado que al poner la opcion de editar con el domain service y crearse los metodos de actualizacion cuando hago la instancia no se ven y no puedo realizar estas acciones.
se que se utiliza el mismo contexto pero los attach y savechanges… no resultan…
alguna ayuda???
Jorge Levy says:
Mar 8, 2011
René (y para la gente que lo ha pedido), prometo firmemente crear el post esta semana…
Saludos.
Javier Bolaños says:
Mar 15, 2011
Hola Jorge Levy, te comento que he estado siguiendo tus tutoriales y me han parecido geniales, soy principiante en estas tecnologías y aunque he seguido y entendido tus tutoriales este último, el de los filtros, no me quiere funcionar. en realidad no sé cuál será el problema. Lo único diferente que tengo es que estoy trabajando con una base de datos diferente a la que utilizas en el ejemplo. Si me puedes ayudar te debería una muy grande.
Jorge Levy says:
Mar 16, 2011
Javier, seguro que podemos ayudar en la medida de lo posible. Pero para poder ayudarte, necesito un poco más de información. Lo primero que se me ocurre es preguntar si tu problema es que te marca un error, o por ejemplo simplente no aplica el filtro (o se tarda mucho). Si es el segundo caso, creo que problema pudiera ser en relación al tiempo de actualización (ya tendremos un post con información que no permita ver si el Domain Data Source esta ocupado).
Creo que la mejor forma de abordar tu problema es que me escribas por correo (jorge.levy@jorgelevy.com). Una vez que encontremos la solución (en el mejor de los casos), venimos y la publicamos por aca, para hacerlo del conocimiento público.
René, como te habrás dado cuenta tuve que liberar un post más antes de ver como hacer actualizaciones en la base de datos, ya que requeriamos al menos tener oportunidad de actualizar los datos desde el lado del cliente, razon por la cual tuve que trabajar primero en el post de detalles de un registro. Pero ahora sí, esta semana sale el post de las actualizaciones de datos en la base de datos..
Javier Bolaños says:
Mar 17, 2011
Jorge Levy Muchas gracias por tu respuesta en realidad como soy principiante en XALM tenía un error al momento de implementar el código del filtro, lo estaba ubicando en la función de la búsqueda que seguí en el post anterior y no en la principal que se encarga de llenar los datos. Pero ya solucioné el problema y si funciona bien. Gracias. Por otro lado, dado que actualmente me encuentro realizando mi trabajo de grado bajo estas tecnologías, quisiera ver si es posible, en post posteriores, puedas subir un tutorial que explique cómo implementar consultas SQL pues no estoy muy familiarizado con consultas LINQ cuando quiero utilizar consultas a profundidad es decir consultas complejas de inner join, de agrupamientos y de agregado.