Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    View Cyril Durand's profile on LinkedIn

    hit counters

XmlDatasource et requetes XPath - XPathSelect

Question :

Je suis peut être idiot mais je n'arrive pas à voir comment je peux filtrer via XPath un XMLDataSource afin de remplir une datalist avec le text des Tags name.

Pourriez-vous me donner une piste ?

Réponse :

Les requêtes XPath interviennent à deux endroits lorsqu'on utilise un XMLDataSource. On peut les utiliser soit pour filtrer notre XMLDataSource afin de n'afficher que les enregistrements souhaités, ou alors on peut les utiliser pour sélectionner le texte à afficher.
Voici un exemple simple d'utilisation de requête XPath via un XMLDataSource.

<asp:XmlDataSource runat="server" ID="xmlDSCities" XPath="cities/city[starts-with(postalCode,69)]"> <Data> <cities> <city> <name>Lancie</name> <postalCode>69220</postalCode> </city> <city> <name>Villie morgon</name> <postalCode>69910</postalCode> </city> <city> <name>Macon</name> <postalCode>71000</postalCode> </city> </cities> </Data> </asp:XmlDataSource> <asp:Repeater runat="server" DataSourceID="xmlDSCities"> <ItemTemplate> <%# XPath("name") %> </ItemTemplate> <SeparatorTemplate>-</SeparatorTemplate> </asp:Repeater>

Cet exemple affichera seulement les communes dont le code postal commence par 69. On notera que pour simplifier l'exemple, j'ai mis le contenu XML directement dans le contrôle XMLDatasource; on peut bien sur spécifier un nom de fichier ou une URL via sa propriété DataFile.

Allons plus loin :

On peut aller encore plus loin en utilisant la méthode XPathSelect. Cette méthode permet de binder facilement des repeaters imbriqués.

<asp:XmlDataSource runat="server" ID="xmlDSCities" XPath="cities/city[starts-with(postalCode,69)]"> <Data> <cities> <city> <name>Lancie</name> <postalCode>69220</postalCode> <persons> <person> <firstName>Cyril</firstName> </person> <person> <firstName>Pouet</firstName> </person> </persons> </city> <city> <name>Villie morgon</name> <postalCode>69910</postalCode> </city> <city> <name>Macon</name> <postalCode>71000</postalCode> </city> </cities> </Data> </asp:XmlDataSource> <asp:Repeater runat="server" DataSourceID="xmlDSCities"> <ItemTemplate> <%# XPath("name") %> <br /> <asp:Repeater runat="server" DataSource='<%#XPathSelect("persons/person") %>'> <ItemTemplate> <%# XPath("firstName") %> </ItemTemplate> <SeparatorTemplate>-</SeparatorTemplate> </asp:Repeater> </ItemTemplate> <SeparatorTemplate><hr /></SeparatorTemplate> </asp:Repeater>

 

Les méthodes XPath et XPathSelect sont définit au niveau de la classe XPathBinder [MSDN]

Posted: dimanche 13 avril 2008 18:53 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Expression Web] Astuce de la Semaine : Utilisation et Configuration des Extraits de Code par Chronos, Blog d'un Intégrateur .NET le il y a 4 heures et 17 minutes

- Faire de l'AJAX sans restrictions de domaine par Kévin Gosse le il y a 6 heures et 46 minutes

- [IronPython] : IronPython & Silverlight 2 - Part II par Kim's Blog le 07-22-2008, 14:50

- [WPF] Des requêtes NDepend pour analyser vos projets WPF par Thomas Lebrun le 07-21-2008, 09:27

- Liste de jeux pour Silverlight par Pierrick's Blog le 07-20-2008, 14:37

- T_PAAMAYIM_NEKUDOTAYIM par MadMatt le 07-19-2008, 16:16

- Et je mets le son.... par Pierrick's Blog le 07-19-2008, 12:09

- SharePoint : Comment interdire l’accès à un utilisateur pour tous les sites d’une Web Application par Blog Technique de Romelard Fabrice le 07-18-2008, 19:05

- VPC - Reset de la position de la console par Blog technique de Nicolas Boonaert le 07-18-2008, 16:29

- Un bug dans IE rendra cette page… non-imprimable ! par Le blog de FremyCompany le 07-18-2008, 15:33