IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#][2.0] Récupération de données d'un fichier Xml à partir d'une ListBox


Sujet :

ASP.NET

  1. #1
    Membre averti
    Avatar de dtavan
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 381
    Points
    381
    Par défaut [C#][2.0] Récupération de données d'un fichier Xml à partir d'une ListBox
    Voilà mon problème, j'ai un fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="utf-8" ?>
    <Products>
    	<Prod id="1" price="100" name="a"/>
    	<Prod id="2" price="150" name="b">
    	<Prod id="3" price="200" name="c">
    	<Prod id="4" price="100" name="d">
    </Products>
    Mon objectif est de lié les données de ce fichier Xml à une DropDownList, jusque là ca va, mais ensuite je dois récupérer dans un label grâce à un autopostback le nom et le prix, pour ce faire j'ai écrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <form id="form1" runat="server">
        <div>
            &nbsp;&nbsp;
            <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="XmlDataSource1"
                DataTextField="name" DataValueField="price" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged2">
            </asp:DropDownList><asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml">
            </asp:XmlDataSource>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></div>
        </form>
    et en code-behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        protected void DropDownList1_SelectedIndexChanged1(object sender, EventArgs e)
        {
            Label1.Text = DropDownList1.SelectedItem.Text; //nom
     
            Label2.Text = DropDownList1.SelectedValue; //prix
        }
    Tout fonctionne mais lorsque je sélectionne le d qui a le même "price" que le a, il me remet sur le a en lieu et place du d ???

    Pourriez vous m'aider SVP ?

    Merci

    PS : pour mieux illustrer mon problème je l'ai mis en ligne avec les sources http://demo.neldim.fr
    David Tavan

    Mon blog 1
    Mon blog 2

  2. #2
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    Les propriétés SelectedValue, SelectedItem et SelectedIndex de la dropdownlist récupcère l'item ayant la valeur spécifiée. Or tu à deux élément ayant la même valeur. Dans ce cas, dixit MSDN :
    Obtient l'élément sélectionné avec l'index le moins élevé dans le contrôle de liste
    Dans ton cas ilfaudrait peut-être mieux mettre l'id dans les valeurs et récupérer le pricde dans ton code en regardant dans la source de données.

  3. #3
    Membre averti
    Avatar de dtavan
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 381
    Points
    381
    Par défaut
    Citation Envoyé par guitoux1
    Salut,

    Les propriétés SelectedValue, SelectedItem et SelectedIndex de la dropdownlist récupcère l'item ayant la valeur spécifiée. Or tu à deux élément ayant la même valeur. Dans ce cas, dixit MSDN :

    Dans ton cas ilfaudrait peut-être mieux mettre l'id dans les valeurs et récupérer le pricde dans ton code en regardant dans la source de données.
    Merci mais comment pourrais-je faire ?
    David Tavan

    Mon blog 1
    Mon blog 2

  4. #4
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Ben il faut aller lire le .xml et récupérer le noeud Prod correspondant à l'id sélectionné. Ca peut être lourd niveau perf.
    Ya une autre solution plus caca, mais bon c'est jouable.

    Tu passe par un fichier xsl qui transformera ton .xml en un autre xml ayant cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8" ?>
    <Products>
    	<Prod value="1-100" name="a"/>
    	<Prod value="2-150" name="b">
    	<Prod value="3-200" name="c">
    	<Prod value="4-100" name="d">
    </Products>
    Puis pour récupérer la valeur du champ price, du fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string value = DropDownList1.SelectedValue;
    Label2.Text = value.Substring(value.IndexOf('-') + 1); //prix
    C'est du bricolage mais ça doit marcher

  5. #5
    Membre averti
    Avatar de dtavan
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 162
    Points : 381
    Points
    381
    Par défaut
    Merci beaucoup je vais travailler sur cette base
    David Tavan

    Mon blog 1
    Mon blog 2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo