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

Windows Forms Discussion :

[C#] [XML] Lecture d'un fichier XML => Combobox


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Points : 5
    Points
    5
    Par défaut [C#] [XML] Lecture d'un fichier XML => Combobox
    J'ai un fichier XML qui se présente sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <ROOT>
       <ELEMENT1a Nom="1a">
          <ELEMENT2a Nom="2a" \>
          <ELEMENT2b Nom="2b" \>   
       </ELEMENT1a>
       <ELEMENT1b Nom="1b">
          <ELEMENT2a Nom="2a" \>
       </ELEMENT1b>
    </ROOT>
    Je place le contenu de mon fichier XML dans un DataSet.
    J'ai placé le nom de l'élément 1a et 1b dans une combobox.

    Je voudrai placer le contenu des élément 2 dans une autre combobox en fonction du choix fait dans la premiere.
    Si j'ai choisi l'élément 1a, dans le seconde combobox, j'aurai donc 2a et 2b.
    Si j'ai choisi l'élément 1b, dans la seconde combobox, j'aurai donc 2a.

    Quelqu'un peut m'aider?

    Ou quelqu'un a une solution plus simple peut-etre?


    J'avais aussi pensé que je pourrai utiliser seulement 1 seule combobox pour que ca me concatène les 2 champs.. c'est possible?

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Si je place tout mon fichier XML dans un XMLdocument, se serai mieux?

    Si oui, comment je fais apres? pour avoir le meme résultat que ci-dessus?

  3. #3
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    salut

    Deja puisque tu as un besoin particulier que le dataset n'offre pas (il va te proposer 1a et 2a dans 2 datatables alors que tu veux 1 info: 1a2a) autant que tu utilise le XmlTextReader pour lire lineairement le fichier XML, et stocker ce que tu veux dans une classe que tu cree et qui te conviendra parfaitement.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxmltextreaderclasstopic.asp

    Les instances de classe tu peux ensuite les mettre dans un arraylist et lier cet arraylist a ta combo
    http://support.microsoft.com/default.aspx?scid=kb;en-us;313634

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Hello,
    Merci pour ton aide... je vais essayer de regarder tout ca... j'espere que je vais arriver a faire ce que je veux..

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    yeah.. pour le moment, j'arrive a faire ce que je veux...

    Mais j'aurai une question pour des filtres...

    J'ai 2 arraylist : (j'essaie de les représentés ici.. )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ArrayList1
    Nom1 // valeur1 // ID1
    Nom2 // valeur2 // ID2
     
    ArrayList2
    NomA // ValeurA // ID1 // IDA
    NomB // ValeurB // ID1 // IDB
    NomC // ValeurC // ID2 // IDC
    A ce stade la, j'ai une combobox qui a les Nom1 et Nom2.

    Est-ce possible de filtrer pour la seconde Combobox?
    Du style si Nom1 est sélectionné dans la premiere Combobox, alors dans une seconde Combobox, j'aurai les NomA et NomB...
    C'est possible ca?

    Si oui, c'est au niveau du Combobox.DisplayMember?

  6. #6
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    la methode la plus simple c'est de garder en memoire ton arraylist2, et de construire un arraylist3 en fonction du choix de la premiere combo, et d'affecter l'arraylist3 a la seconde combo

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Hello,
    Je suis d'accord pour créer un nouveau ArrayList, mais comment je fais pour sélectionner les données du N°2 selon ma sélection dans ma combobox?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    //ArrayList 1
    private ArrayList al_eti = new ArrayList();
    //ArrayList 2
    private ArrayList al_cnt = new ArrayList();
     
    //Fonction qui remplu mes ArrayLists
    XmlDocument doc = new XmlDocument();
    doc.Load("base.xml");
     
    //Variable qui me rempli mes ArrayLists  (en fait 3...)
    int eti_val = 0;
    foreach (XmlElement eti in doc.ChildNodes[0])
    {
    	al_eti.Add(new Etiquette(...));
    	int cnt_val = 0;
    	for (int i=0; i<eti.ChildNodes.Count; i++)
    	{
    		al_cnt.Add(new Contenu(...));
    		al_fci.Add(new FontStyle(...));
     
    		for (int j=1;j<eti.ChildNodes[i].ChildNodes.Count; j++)
    		{
    			if(eti.ChildNodes[0].LastChild.Name == "IMAGE")
    			{
    				if (j == eti.ChildNodes[i].ChildNodes.Count-1)
    				{
    					al_fci.Add(new Image(...));
    				}
    				else
    				{
    				al_fci.Add(new Champ(...));
    				}
    			}
    			else
    			{
    			al_fci.Add(new Champ());
    			}
    		}
    		cnt_val++;
    	}
    	eti_val++;
    }
     
     
    //Premiere combobox
    this.cbb_liste.DataSource = al_eti;
    this.cbb_liste.DisplayMember = "Nom";
    this.cbb_liste.Text = "Sélectionnez un type d'étiquette";
     
    //Si je modifie la premiere combobox
    private void cbb_liste_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    BindingContext[al_eti].Position = cbb_liste.SelectedIndex;
    }
    J'utilise le "private void cbb_liste_SelectedIndexChanged". Parce que selon ce que je choisi, j'affiche dans des textbox des données complémentaires contenues dans la meme lignes de l'arraylist...

  9. #9
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Salut,
    Citation Envoyé par Chad`Chiwa
    Hello,
    Je suis d'accord pour créer un nouveau ArrayList, mais comment je fais pour sélectionner les données du N°2 selon ma sélection dans ma combobox?
    bè tu fais un 'if', rien de plus

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2008, 13h38
  2. Réponses: 1
    Dernier message: 22/04/2008, 11h24
  3. Réponses: 3
    Dernier message: 06/08/2007, 03h44
  4. [DOM] (org.w3c.dom) copier un noeud d'un fichier XML dans un autre fichier XML
    Par snoop dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/02/2007, 17h22
  5. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49

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