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

C# Discussion :

Peupler un TreeView sur de multiples niveaux


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur / DBA
    Inscrit en
    Septembre 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur / DBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 133
    Points : 152
    Points
    152
    Par défaut Peupler un TreeView sur de multiples niveaux
    Bonjour à toutes et à tous,

    Je cherche un moyen simple de peupler et ce sur plusieurs niveaux un treeview.

    J'ai une requête pré étable ne pouvant être modifiée faisant remonter plusieurs informations.

    Les rayons étant des nœuds parents dans ces rayon on trouve des nœuds enfants Les types de produits et via ces types de produits on trouve le produit en lui même. Donc trois niveaux.

    Ma procédure fait revenir un datareader assez conséquent, et je cherche donc à partir de cela à remplir mon treeview, mais pour le moment je bloque pour le troisième niveau. (Ainsi que les éventuels niveaux futurs)

    Auriez vous l'esquisse d'une idée ou mieux une solution.

    Merci d'avance.

    Cordialement.
    Digital D.N.A

  2. #2
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    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
     
            void AddLevel1(TreeView t, Level1 level1)
            {
                var treeNode = t.Nodes.Add(level1.Name);
                foreach (var level2 in level1.Level2)
                {
                    AddLevel2(treeNode, level2);
                }        
            }
     
            void AddLevel2(TreeNode t, Level2 level2)
            {
                var treeNode = t.Nodes.Add(level2.Name);
                foreach (var level3 in level2.Level3)
                {
                    AddLevel3(treeNode, level3);
                }
            }
     
            static void AddLevel3(TreeNode treeNode, Level3 level3)
            {
                treeNode.Nodes.Add(level3.Name);
            }
    Bien sur il faut que tu l'adaptes à tes propriétés, mais je pense que c'est la solution la plus simple.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 123
    Points
    123
    Par défaut
    Salut,
    Si jamais tu veut apporter des niveaux future sans devoir retaper du code, penche toi du coté de la récursivité . C'est assez chaud à faire mais une fois que ca marche tes fiers de toi et c'est très evolutif (enfin je crois )

    Car par exemple (sans vouloir attaquer meziantou (encore merci pour ton aide d'hier )) ses methodes se ressemble beaucoup :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void AddLevel (TreeView t, Level levelx) {
        var treeNode = t.Nodes.Add(levelx.Name);
     
        foreach (var levely in levelx.Levely)
            AddLevel (TreeView t, levely);
    }
    Donc pourquoi pas essayer de factoriser tout ca dans une ou deux fonctions pour pouvoir avoir la possibilité d'ajouter des niveaux facilement (au mieux juste en changeant un variable )

    Mais c'est vrai qui si par la suite tu rajoutera au max 3, 4 niveaux et que les fonctions sont vraiment différentes entre chaque niveau alors la oui la solution de meziantou est la meilleur

  4. #4
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    La récursivité est bien (et pas forcément très complexe) mais il me semble que dans son cas les entités ne sont pas les mêmes (rayons, type de produit, produits). Je me demande donc comment tu te débrouilles pour créer une fonction récursive.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 123
    Points
    123
    Par défaut
    Effectivement dans ce cas ta methode est mieux.
    Cependant (et oui je persiste ^^) ca peut se regler avec un switch et les cas à traiter.

    Mais comme dit la question fatidique : lequel est le plus maintenable? C'est vrai que sur ce coup la je pencherait pour la solution de meziantou

    Edit: dsl pour 'Menziantou'

  6. #6
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Oui je suis d'accord avec toi, on pourrait faire un switch. Cependant si tu regardes ma méthode, elle consiste juste à séparer les cas que tu aurais mis dans ton switch dans une méthode séparée. Pour ma part je préfère ma méthode à celle des switch (chacun ses goûts )

    PS : mon username c'est Meziantou et non pas menziantou .

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur / DBA
    Inscrit en
    Septembre 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur / DBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 133
    Points : 152
    Points
    152
    Par défaut
    Bonjour,

    Tout d'abord merci pour vos réponses, je vais regarder cela aujourd'hui ou demain. J'avouerai que je me fou de savoir si la récursivité est complexe ou non dans le sens ou le principal est que la chose fonctionne après si je peux la comprendre c'est encore mieux !

    Bon dimanche !
    Digital D.N.A

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur / DBA
    Inscrit en
    Septembre 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur / DBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 133
    Points : 152
    Points
    152
    Par défaut
    Hé bien écoutez votre solution marche à merveille, reste maintenant à gérer le fait des doublons ! Cependant c'est du T-SQL.
    Digital D.N.A

  9. #9
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 126
    Points : 84
    Points
    84
    Par défaut
    Bonjour,
    peux-tu me communiquer la solution que t'as utilisé ( exemple de la fonction).

    Merci d'avance

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

Discussions similaires

  1. Binding d'un TreeView sur plusieurs niveaux avec images
    Par Spikuria dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 25/05/2009, 17h17
  2. [SQL] Pb conditions sur tables multiples
    Par guitou12 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/08/2006, 13h49
  3. probléme treeview sur access
    Par tbrault_acta dans le forum Access
    Réponses: 3
    Dernier message: 02/06/2006, 15h20
  4. [C#] TreeView avec CheckBox à certain niveaux
    Par Maxsin dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/04/2006, 16h29
  5. Condition sur un multiple de ....!
    Par Orakle dans le forum Access
    Réponses: 2
    Dernier message: 08/03/2006, 15h34

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