En esta entrada vamos a ver cómo se utilizan y para que sirven los filtros en LightSwitch. Como ejemplo voy a tomar una pregunta que me ha sido realizada en el blog, voy a dar aquí mi visión y una posible solución, por supuesto seguro que no es la única pero se agradecen los comentarios y las aportaciones.
El ejemplo trata de unos productos que tienen relacionados unos numeros de serie, más adelante introduciremos una tabla de ventas en las que asociamos que producto vendemos y que número de serie asignamos. fácil. ¿no? 😉
Comenzamos definiendo las tablas de la base de datos, (al final del artículo están los ficheros para descargar :D). La base de datos se podía haber creado desde LS pero yo estoy más cómodo desde SQL SERVER.
Ahora creamos la aplicación LS y le adjuntamos la base de datos que hemos creado:
Elegimos las tablas:
Vemos la relación de productos con los números de serie
Creamos una Screen para introducir un par de productos en nuestra tabla
Creamos otra para las Series, observamos que son independientes
Vemos como va quedando el arbol
Introducción de productos
Introducción de números de series
Ahora vemos el maestro-detalle de productos a numeros de serie
Es el momento de incorporar la tabla de ventas que tiene una relación con productos y otra con números de serie
Refrescamos el data source para que LS recoja los cambios.
Añadimos la tabla de ventas.
Vemos la relación dentro de LS
Creamos una nueva pantalla de Venta
Debemos crear una nueva Screen CreateNewVenta
Para trabajar más cómodos ponemos la Screen de ventas como predeterminada.
En la Screen de ventas hacemos un override del botón new y lo redirigimos a CreateNewVenta
Application.ShowCreateNewVenta();
Ahora podemos ver que se activa la Screen que hemos definido y vemos como no funciona adecuadamente, cuando elegimos los números de serie aparecen todos y no sólo los asociados a ese producto.
En la Screen CreateNewVenta añadimos un nuevo DataItem NumerosSerieCollection
Editamos su query y añadiremos un Filtro (Filter)
Aquí vemos el Where de Productos.ProductoId y el parámetro, éste parametro lo definiremos a continuación
Importantisimo este paso, en las propiedades del ModalWindowPicker (podría ser también un ComboBox) hay que cambiar el choices al nuevo query que hemos creado:
Ahora hay que relacionar el productoId del Query parameters con el Producto de VentaProperty
Ahora en las properties del productoId del Query Parameters establecer el parameters Value
Ahora aparece perfectamente la relación del filtro:
Cuando lo probamos, funciona perfectamente y podemos ver los números de serie asociados a cada producto.
Podemos almacenar las ventas pulsando el boton add en el grid editable
Bueno, con esto queda explicado cómo utilizar los filtros en LighSwitch, la explicación es escueta pero se apoya en bastantes imágenes que he ido guardando mientras lo realizaba.
Desde aquí se puede descargar la base de datos y el proyecto LS.