Los datos que aparecen en Main Pagee se filtran por género con el mecanismo siguiente:
El valor seleccionado en el cuadro combinado Genre se almacena en el nodo de fuente de página $Persistent/Root/Genre.
Para definirlo debe asociar el nodo de fuente de página Genre con el cuadro combinado (arrastre y suelte el nodo en el cuadro combinado; véase la imagen siguiente).
Los valores que hay disponibles en la lista desplegable del cuadro combinado se definen en las propiedades del cuadro combinado con una expresión XPath que (i) encuentre la secuencia de valores específicos de entre la lista de todos los valores de Genre en la fuente de página y (ii) coloca antes de esa secuencia un valor de All: 'All', distinct-values($BookCatalog/DB/RowSet/Row/Books/Row/@Genre).
Nota: | recuerde que hemos configurado el nodo $Persistent/Root/Genre para que tenga como valor predeterminado All. Consulte Página principal: información general. |
En el segundo paso de nuestro mecanismo, primero hacemos que sean visibles en el diseño solamente las tablas de autor que tienen algún libro cuyo género coincide con el género seleccionado. Después, como algunos autores tienen más de un libro y puede que ninguno de ellos sea del género seleccionado, también debemos aplicar el criterio Genre a la visibilidad de cada libro.
Para ello seleccionamos los componentes de diseño que correspondan y definimos su propiedad Visible en consonancia:
•Para los autores, seleccionamos la tabla que se repite para Authors y definimos la propiedad Visible de esa tabla con esta expresión XPath (el nodo de contexto de este componente es Authors): if ($PERSISTENT/Root/Genre='All') then true() else Books/Row/@Genre=$PERSISTENT/Root/Genre. Esto significa que si la selección es All, la visibilidad será true para todas las tablas Author. De lo contrario, la visibilidad de una tabla Author será true solamente si algún elemento secundario Book de esa tabla Author contiene un género que coincida con el género seleccionado.
•Para los libros seleccionamos la fila dinámica para Books y definimos la propiedad Visible del grupo de esa fila con esta expresión XPath (el nodo de contexto para este componente es Books): if ($PERSISTENT/Root/Genre='All') then true() else @Genre=$PERSISTENT/Root/Genre. Esto significa que si la selección es All, la visibilidad será true para todas las filas Book. De lo contrario, la visibilidad de una fila Book será true solamente si el atributo @Genre de ese libro coincide con el género seleccionado.
A la derecha del cuadro combinado de selección de género hemos añadido un botón All (imágenes anteriores), con el que se puede restablecer la visibilidad para que se vean todos los registros de la BD. Al hacer clic en este botón se ejecutan las acciones correspondientes:
1.La acción Actualizar nodo actualiza el nodo $Persistent/Root/Genre con un valor de All.
2.La acción Actualizar imagen en pantalla actualiza la pantalla, lo que actualiza la visibilidad de los distintos componentes (con el nuevo valor Genre de All).
Para definir estas acciones, haga clic con el botón derecho y seleccione el comando para acceder a las acciones AlHacerClic correspondientes. Puede ejecutar una simulación para ver los efector de las acciones del botón.