Changer dynamiquement un contenu de modèle
Un autre avantage de l’utilisation de modèles de commande est que vous pouvez transférer des valeurs de paramètre dans le modèle de commande et changer le contenu dans le modèle dynamiquement. Dans notre fichier d'exemple Cities3-DynamicUpdates.mtd, nous avons ajouté une fonction "sort" à l’exemple précédent, Cities2-SwitchTemplates.mtd. Cette fonction permet aux utilisateurs de décider si l’affichage des pays et/ou villes doit être trié (voir capture d’écran ci-dessous).
Comment cela fonctionne ?
Afin de mettre en place la fonction "sort", nous avons procédé comme suit :
•Nous avons ajouté un paramètre \$sort optionnel pour les deux modèles de commande.
•En haut de la page du design, nous avons ajouté une case à cocher à droite de chaque commande d’espace réservé (voir capture d’écran ci-dessous), et nous avons défini la largeur de la colonne de la case à cocher sur wrap_content. Nous avons aussi défini la propriété Visibilité de chaque case à cocher.
•Dans l’arborescence \$PERSISTENT, nous avons ajouté deux attributs, SortCountries et SortCities, et nous avons défini la valeur fixée par défaut de chacun d’entre eux sur 0 (voir capture d’écran ci-dessous). Nous avons ensuite défini ces deux nœuds pour qu’ils soient mis à jour par la valeur de case à cocher respective (sélectionnée ou pas sélectionnée) ; pour ce faire, glisser chaque nœud dans sa case à cocher respective.
•Pour chaque espace réservé, nous avons défini la valeur du paramètre \$sort pour devenir les expressions XPath, respectivement, if (\$PERSISTENT/Root/@SortCountries=1) then true() else false() et if (\$PERSISTENT/Root/@SortCities=1) then true() else false().
•Dans chaque modèle de commande, la séquence qui génère les lignes répétitives ou les colonnes répétitives de la table est définie par l’expression XPath if (\$sort) then sort(\$values) else \$values. En langage clair, cela signifie : Si la valeur du paramètre \$sort est true(), alors elle trie les items dans la séquence \$values, sinon, utiliser la séquence \$values telle quelle (donc l’ordre dans le fichier de données XML CitiesWorldwide.xml).
La chose suivante se produit :
•Les valeurs des attributs SortCountries et SortCities sont définies dans une valeur initiale de 0. Les valeurs de ces deux peuvent être modifiées en choisissant (valeur définie sur 1) ou en désélectionnant (valeur définie sur 0) leurs cases à cocher respectives.
•Les valeurs des nœuds d’attributs respectifs (SortCountries et SortCities) sont passées par le biais des deux espaces réservés dans le paramètre \$sort du modèle de commande respectif soit en tant que true() ou false().
•L’expression XPath qui choisit les items de la séquence \$values, qui produit les lignes répétitives ou les colonnes répétitives, soit trie la séquence ou pas, selon la valeur du paramètre \$sort du modèle (true() ou false()).