Tabla "Edit Offices"
La tabla "Edit Offices" se ha creado en una página de nivel superior separada. Cuando la solución se ejecuta, se puede acceder a esta página desde la página de nivel superior (consulte la siguiente captura de pantalla a la izquierda). Haciendo clic sobre el botón Tabla "Edit Offices" se carga la tabla Edit Offices (siguiente captura de pantalla a la derecha). La tabla "Offices" muestra siete filas, cada una de las cuales tienen una columna "ID" que se puede editar, una columna "City" que se puede editar y un control "´Eliminar" (siguiente captura de pantalla a la derecha). Además existe un control "Anexar fila" debajo de la última fila, un botón Enviar localizado en la barra de la tabla "Edit Offices" y un botón Atrás para regresar a la página anterior (sería la página de nivel superior en este caso).
A ambos botones Editar del diseño (siguiente captura de pantalla) les ha sido asignada la acción "Ir a la página" en sus eventos respectivos AlPulsarBotón (haga clic con el botón derecho y seleccione Acciones de control para AlPulsarBotón). Estas acciones de "Ir a la página" (segunda captura de pantalla) cargan las páginas metas correspondientes.
Crear tablas "Oficina" editables
La tabla "Offices" de la BD tiene la estructura que se muestra en la estructura jerárquica de datos de $DB1 (siguiente captura de pantalla). Debido a que el atributo @id es la clave primaria, no se puede cambiar. Esto significa que cuando se anexa un nuevo registro, el usuario final no puede introducir un valor @id usando la solución. El valor @id debe generarse de forma automática usando una expresión XQuery. La expresión XQuery se inserta usando el comando del menú contextual, Comprobar existencia antes de la página se cargue (valor XPath):
let $all := $DB1/DB/RowSet/Row/@id
let $ids := remove($all, index-of($all, ""))
let $id := if (empty($ids)) then 1 else max($ids) + 1
return $id
En el diseño haremos lo siguiente:
Actividad | Método |
Mostrar todas las filas (Office) | Agregar una tabla de extensión con la fila Office como elemento de extensión. |
Incluir controles para agregar y eliminar filas | Cuando se agrega la tabla, se habilita la inclusión automática de los controles "Eliminar/Anexar" |
Activar la edición de los valores @City | Agregar el control de campo "Editar" que tiene como nodo de origen a @City |
Volver a guardar cambios en la BD | Agrega la acción Guardar en el evento AlPulsarBotónEnviar de la página. Con el botón derecho $DB1 y active Crear GrupoOriginaldeFilas |
Regresar al menú principal | Agrega la acción "Ir a la página" al evento AlPulsarBotónAtrás de la página. |
Al arrastrar el control "Tabla" desde el Panel de control y soltarlo en el diseño, aparece el cuadro de diálogo "Nueva tabla" (captura de pantalla siguiente). Especifique que la tabla se repitirá, introduzca el número de columnas(4)y de filas (1), seleccione y active la casilla de verificación Controles Anexar/Eliminar y luego haga clic en Aceptar. Se agregarán las etiquetas a las tres primeras celdas de la fila tal y como se muestra en la captura de pantalla siguiente. Se crea un enlace del nodo de origen al nodo @id de $DB1 para la segunda etiqueta (DB:id).
|
Se agrega un control de campo "Edición" a la cuarta celda y para ello se crea un enlace de nodo de origen al nodo @City de $DB1. Usamos un control de campo "Editar" en esta celda porque queremos que el usuario final sea capaz de editar los valores @City; todas las demás celdas tienen controles de etiquetas.
|
Haga clic en Página | Acciones de página para abrir el cuadro de diálogo "Acciones de página" (consulte la captura de pantalla siguiente). Las acciones se definen para los eventos siguientes:
•AlPulsarBotónEnviar: Guarda todas las columnas de la página en la BD ($DB1) y regresa a la página de nivel superior. Debería también añadir la acción Recargar para que la BD se recargue con los datos no modificados en caso de que el resgistro no se guardara en la BD (captura de pantalla anterior). •AlPulsarBotónAtrás: Regresa a la página de nivel superior. •
La estructura la fuente de página también ha de incluir un elemento OriginalRowSet que es una copia del elemento RowSet. Los datos originales se guardan el elemento OriginalRowSet para que se puedan editar las columnas del elemento RowSet. El elemento OriginalRowSet se actualiza con el valor nuevo sólo cuando los datos se vuelven a guardar en la BD. |