Sources de pages de la page principale
La page principale a trois sources de page : \$XML1, \$DB1 et \$DB2. Celles-ci sont affichées et gérées dans le Volet de sources de page (voir capture d'écran ci-dessous).
Le nœud de contexte XPath de la page est le nœud de racine \$XML1. Cela signifie que toutes les expressions XPath sur cette page ont \$XML1 en tant que leur nœud de contexte. Afin de localiser un nœud dans une des autres arborescences (\$DB1et \$DB2 qui sont les nœuds de racine de ces arborescences) lancer le chemin de localisateur XPath avec le nœud de racine respectif.
La première source de page : \$XML1
Cette source de page a été créée en tant que XML vide éditable. Le nœud de racine \$XML1 contient un élément racine (root), qui possède deux attributs (DesiredOffice et DesiredYear). Le nœud de racine, \$XML1, a été défini (avec son menu de contexte) en tant que nœud de contexte XPath pour la page 2. Aucun fichier par défaut n'est défini, donc aucune donnée ne sera importée dans l'arborescence.
Cette source de page (\$XML1) a été créée pour contenir les sélections de la liste de choix de l'utilisateur final :
•L'attribut DesiredOffice contient la sélection Office de l'utilisateur final
•L'attribut DesiredYear contient la sélection Year de l'utilisateur final
Afin de contenir les données sélectionnées dans les listes de choix, les deux nœuds d'attributs sont associés avec les listes de choix en tant que liens de source de page. Chacun des liens de source des deux pages est réalisé en glissant le nœud d'attribut dans la liste de choix respective (voir capture d'écran du simulateur ci-dessous).
Chacun des nœuds a reçu une valeur initiale lors au chargement de la page (via la commande S'assurer de l'existence au chargement de la page (Valeur XPath) du menu de contexte). Cela est dû au fait que la valeur du nœud apparaît dans la liste de choix associée et que nous voulons que la liste de choix présente une sélection initiale (voir capture d'écran du simulateur ci-dessus). Les expressions XPath qui fournissent les valeurs initiales sont :
•Pour @DesiredOffice: if (count(\$DB1/DB/RowSet/Row) > 0) then \$DB1/DB/RowSet/Row[1]/@id else ""
Si \$DB1 contient un ou plusieurs enregistrements, définit la valeur @id du premier enregistrement en tant que la valeur de @DesiredOffice. S'il n'y a pas d'enregistrement, définit le string vide en tant que la valeur de @DesiredOffice.
•Pour @DesiredYear: min(distinct-values(\$DB2/DB/RowSet/Row[@Office=\$XML1/root/@DesiredOffice]/@Year))
Dans \$DB2, sélectionne tous les enregistrements du bureau sélectionné dans @DesiredOffice, collecte les années uniques depuis ces enregistrements, puis sélectionne l'année avec la valeur numérique minimum.
En outre, nous avons spécifié que le nœud @DesiredOffice est rempli correctement à chaque chargement de la page principale. Pour ce faire, insérer une action Mettre à jour nœud lors de l'événement Sur chargement de la page dans la page principale (Page | Actions de page).
L'action met à jour le nœud @DesiredOffice. S'il s'agit du premier chargement de la page, l'ID du premier bureau sera passé en tant que contenu de @DesiredOffice. Dans le cas contraire, la valeur est celle qui se trouve déjà dans @DesiredOffice. Le résultat de cette opération est que, lors d'une exécution, la valeur contenue dans @DesiredOffice n'est pas modifiée mais la valeur est initialisée à chaque fois que la page est chargée pour la première fois.
La deuxième source de page : \$DB1
La deuxième source de page (\$DB1) est la table Offices dans la base de données MS Access, OfficeSales_DB.mdb. Les données pour cette source de page proviennent de la table Office de la BD.
La table Offices contient deux colonnes (id et City) qui sont représentées dans l'arborescence de données en tant qu'attributs de l'élément Row, qui correspond lui-même à une ligne dans la table de BD. Puisque la colonne id est la clé primaire et que les valeurs ne peuvent pas être changées, nous ne pouvons pas éditer cette colonne. Néanmoins, nous devons créer les valeurs id pour les nouvelles lignes. Nous automatisons cela en écrivant une expression XQuery pour générer la valeur id pour chaque ligne créée. L'expression XQuery est insérée en utilisant la commande de menu de contexte. S'assurer de l'existence au 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
Veuillez noter que la valeur id est le numéro d'ID unique du bureau alors que la valeur City est le nom de la ville dans laquelle se trouve le bureau. Cela est important car, alors que c'est l'id qui est utilisée pour identifier un bureau de manière unique (via le nœud \$XML1/root/@DesiredOffice), c'est le nom de la ville que nous utilisons pour identifier un bureau pour l'utilisateur final.
Un nœud OriginalRowSet doit être créé (via le menu de contexte) si un nœud situé dans la source de page doit être édité. Cela est nécessaire de manière à ce qu’OriginalRowSet contienne les données originales pendant que RowSet contient les données (éditées) actuelles Les deux ensembles de données (originales et éditées) sont requis de manière à ce que MobileTogether Designer puisse différencier entre ce qui est nouveau, mis à jour et supprimé, et puisse procéder aux modifications nécessaires en temps voulu. C'est également nécessaire de manière à créer de nouvelles clés primaires avec l'instruction XQuery let. Lorsque la base de données est mise à jour, les données mises à jour deviennent les nouvelles données originales et sont saisies dans le nœud OriginalRowSet.
La troisième source de page : \$DB2
La troisième source de page (\$DB2) est la table Sales située dans la base de données MS Access, OfficeSales_DB1.mdb. Les données de cette arborescence de données proviennent de la table Sales de BD.
Chaque ligne dans la table Sales contient cinq colonnes (id , Licenses, Month, Year et Office). La ligne de table de BD correspond à l'élément Row dans l'arborescence de la source de page. Les colonnes de la table correspondent aux attributs de l'élément Row. L'attribut id a une expression XQuery pour générer la valeur id pour chaque nouvelle ligne créée. 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
Un nœud OriginalRowSet doit être créé (via le menu de contexte) si un nœud situé dans la source de page doit être édité. Cela est nécessaire de manière à ce qu’OriginalRowSet contienne les données originales pendant que RowSet contient les données (éditées) actuelles