Table Edit Offices
La table Edit Offices a été créée sur une page de niveau supérieur séparée. Lorsque la solution est exécutée, cette page est accessible depuis la page principale (capture d'écran en-dessous à gauche). Cliquer sur le bouton Edit Offices Table pour charger la table Edit Offices (capture d'écran en-dessous à droite). La table Offices a sept lignes, chacune d'entre elles contient une colonne d'ID non-éditable, une colonne City éditable et une commande Supprimer (voir la capture d'écran en-dessous à droite). De plus, vous trouverez une commande d'ajout de ligne en-dessous de la dernière ligne, un bouton Soumettre dans la barre Edit Offices Table et un bouton Retour pour retourner à la page précédente (la page principale, dans ce cas).
Dans le projet, les boutons Edit (première capture d'écran ci-dessous) ont tous les deux été attribués à l'action Aller à la page pour leurs événements SurClicDuBouton respectifs (cliquez avec le bouton de droite sur le bouton et choisissez Actions de commande pour SurClicDuBouton). Ces actions Aller à la page (deuxième capture d'écran ci-dessous) chargent les pages cibles respectives.
Création de la table éditable Offices
La structure de la table Offices de la BD est affichée dans l'arborescence de données de \$DB1 (capture d'écran ci-dessous). Puisque l'attribut @id est la clé primaire, il ne peut pas être modifié. Cela signifie qu'à l'ajout d'un nouvel enregistrement, l'utilisateur final ne peut pas saisir une valeur @id via la solution. La valeur @id doit être générée automatiquement en utilisant une expression XQuery. L'expression XQuery est insérée en utilisant la commande de menu de contexte. S'assurer de l'existence avant le chargement de la page (Valeur 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
Dans le projet, nous allons procéder comme suit :
Pour... | Instructions |
Afficher toutes les lignes (Office) | Ajouter une table répétitive avec la ligne Office en tant qu'élément répétitif |
Inclure les commandes de suppression et d'ajout de lignes | Lors de l'ajout de la table, activez l'inclusion automatique des commandes Supprimer/Ajouter |
Activer l'édition des valeurs @City | Ajouter une commande Éditer le champ contenant un nœud de source vers @City |
Réenregistrer les changements dans la BD | Ajouter une action Enregistrer à l'événement ClicDeBoutonsursoumission de la page d’action ; De même, cliquez sur le bouton de droite\$DB1 et basculer sur Créer OriginalRowSet |
Retourner à la page principale | Ajouter une action Aller à la page à l'événement SurClicDeBoutonRetour |
Le dialogue Nouvelle table apparaîtra en glissant la commande de table depuis le Volet des commandes et en la déposant dans le projet (capture d'écran ci-dessous). Spécifiez que la table sera répétitive, saisissez le nombre de colonnes (4) et de lignes (1), sélectionnez la case à cocher Commandes Ajout/Suppression automatique et cliquez sur OK. Les libellés sont ajoutés aux trois premières cellules de la ligne, comme indiqué dans la capture d'écran ci-dessous. Un lien de nœud source vers le nœud @id de \$DB1 est créé pour le deuxième libellé (DB:id).
|
Une commande d'édition de champ est ajoutée à la quatrième cellule et un lien de nœud de source vers le nœud @City de \$DB1 a été créé (DB:City). Nous utilisons une commande d'édition de champ dans cette cellule parce que nous souhaitons que l'utilisateur soit capable d'éditer les valeurs @City. Toutes les autres cellules ont des commandes de libellés.
|
Cliquer sur Page | Actions de page pour ouvrir le dialogue d'Actions de page (voir la capture d'écran ci-dessous). Les actions sont définies pour les événements suivants :
•ClicDeBoutonSurSoumettre: Enregistre toutes les colonnes de la page sur la BD (\$DB1) et retourne à la page principale. Le cas échéant, vous pouvez également ajouter l'action Recharger pour recharger la BD avec les données non modifiées dans les cas où la BD n'est pas enregistrée à la BD (voir la capture d'écran ci-dessus). •SurClicDeBoutonRetour : Retourne à la page principale.
L'arborescence de la source de page doit également inclure un élément OriginalRowSet qui est une copie de l'élément RowSet. Les données originales sont sauvegardées dans l'élément OriginalRowSet, de manière à ce que les colonnes de l'élément RowSet puissent être éditées. L'élément OriginalRowSet est uniquement mis à jour avec la nouvelle valeur si les données sont réenregistrées dans la BD. |