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 :

Treeview et Listview bonne méthode ?


Sujet :

Windows Forms

  1. #1
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut Treeview et Listview bonne méthode ?
    Je vous explique mon questionnement. Avant j'avais sa :

    Une treeview + un datagridview + un dataset ( ou il y a les données a afficher )

    + un évenement qui récup le noeud de la treeview et qui affiche la bonne table dans le datagridview

    Mais apparament le listview est plus approprié a ce que je veus faire, j'aimerais donc remplacer le datagridview par un listview. Le problème c'est que je ne connais pas du tous se control et qu'il n'y a pas beaucoup de tutorial dessus.

    J'aimerais donc conserver mon dataset. Y-a t-il directement un source a appliquer a la listeview du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listview1.DataSource=dataset[etetete];
    Où dois-je récupérer le noeud de la treeview et a chaque fois crée les items qui vont bien depuis mon dataset ? ce qui me paraît un peu lourd quand même non ?

  2. #2
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    J'ai un autre soucis:

    J'aimerais récupérer le niveau du noeud sur lequel le user clique et donc le nom des noeuds enfants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     void treeView1_Click(object sender, EventArgs e)
            {
     
                string name = (sender as TreeView).SelectedNode.Text;
                int num = (sender as TreeView).SelectedNode.Level;
            }
    Mais je n'arrive pas a récuperer le niveau du noeud

  3. #3
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Essaye avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TreeNode NoeudsSelectionner = TreeView1.SelectedNode;
    int Level = NoeudsSelectionner.Level;
    Ca marche chez moi
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    Oui seulement voilà ce que j'ai fait :

    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
    TreeNode NoeudsSelectionner = treeView1.SelectedNode;
                int Level = NoeudsSelectionner.Level;
     
                switch (Level)
                {
                    case 0:
                        foreach (TreeNode tn in treeView1.Nodes[Level].Nodes)
                            {
                                MessageBox.Show(tn.Text);
     
                            }
                            break;
     
                    case 1:
                            foreach (TreeNode tn in treeView1.Nodes[0].Nodes[Level].Nodes)
                            {
                                MessageBox.Show(tn.Text);
     
                            }
                            break;
     
                    case 2:
                            MessageBox.Show("Affichage list view");
                            break;
    Seul problème lorsque l'on a une arborescence comme ceci :




    Lorsque l'utilisateur clique sur requête sauvegarder son niveau est 1 donc il affiche le nom des noeud de niveau 2 alors que je voudrais qu'il m'affiche le contenu de requettes sauvegarde Existe t'il une méthode pour vois si un noeud a des enfants ?

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Oui regarde tu coté des propriétés NextNode, LastNode et FirstNode
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    C'est pas ca que tu veux faire ?
    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
    TreeNode NoeudsSelectionner = TreeView1.SelectedNode;
    int Level = NoeudsSelectionner.Level;
    switch (Level) {
        case 0:
            foreach (TreeNode Tn in NoeudsSelectionner.Nodes) {
                MsgBox(Tn.Text);
            }
            break;
        case 1:
            foreach (TreeNode Tn in NoeudsSelectionner.Nodes) {
                MsgBox(Tn.Text);
            }
            break;
        case 2:
            break;
    }
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  7. #7
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    a ton moyen de faire un truc du style en c# :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (NoeudsSelectionner.NextNode )
    {
    ...
    }
    il me fait une erreur comme quoi ce n'est pas un booléen. Comment vérifitons en c# l'existance où non d'un objet ?

  8. #8
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Mon code du post précédent ne marche pas ?? Pourtant chez moi ca fait exactement ce que tu cherches.

    Sinon pour la condition c'est normal que ca plante. Si NexNode vaut Nothing alors y'a plus de noeud qui suivent sinon on est pas au bout de la liste. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!(NoeudSelectionner.NextNode == null)) {
     
    }
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  9. #9
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    Voilà j'ai fini par y arriver voilà le code :


    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
     
                TreeNode NoeudsSelectionner = treeView1.SelectedNode;
                int Level = NoeudsSelectionner.Level;
     
    if (NoeudsSelectionner.NextNode == null)
                {
    //Noeuds parent avec enfants
                    foreach (TreeNode tn in NoeudsSelectionner.Nodes)
                    {
                        listView1.Items.Add("test", tn.Text, 0);
                    }
                    listView1.Refresh();
                }
                else
                {
    //noeuds sans enfants (affichage listeview )
                    ...
                }

  10. #10
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    En fait c'est pas résolue puisque le NextNodes obtient le noeud d'arbre frere suivant et non le noeuds enfant suivant...

    Quelqu'un a une méthodes pour trouver si un noeuds a des enfants ou pas ?

  11. #11
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Ben euh, si NoeudsSelectionner.Nodes contient des noeuds et n'est pas null, c'est qu'il a des enfants non ? Ce n'est pas ce que tu cherches ?
    J'ai encore rien compris ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  12. #12
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    tu veus dire sa :

    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
    if (NoeudsSelectionner.Nodes != null)
                {
                    //pour chaque noeuds avec enfants on affiche l'enfants
                    foreach (TreeNode tn in NoeudsSelectionner.Nodes)
                    {
                        listView1.Items.Add("test", tn.Text, 0);
                    }
     
                }
                else
                {
                    DataTable dt = new_conec.ds.Tables[NoeudsSelectionner.Text];
     
                    ListViewItem lst = new ListViewItem();
     
                    foreach (DataRow dr in dt.Rows )
                    {
                       lst.Text = dr[0].ToString();
                       lst.SubItems.Add(dr[1].ToString());
                       lst.SubItems.Add(dr[2].ToString());
                    }
                }
    Le problème c'est qu'il n'est jamais null lol ...

  13. #13
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu peux aussi tester si le Count est à 0 à la place de tester si c'est null.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  14. #14
    Membre éclairé Avatar de Luffy49
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 399
    Par défaut
    merci ^_^ sa marche nikel j'avais pas penser a counter les noeuds

    Me reste plus qu'a gérer les collonnes avec subitems et de gerer les smallicon.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/08/2006, 09h28
  2. Réponses: 8
    Dernier message: 27/02/2006, 15h28
  3. [EJB2.1 Entity] [CMP] Est-ce la bonne méthode ?
    Par stailer dans le forum Java EE
    Réponses: 8
    Dernier message: 20/06/2004, 20h42
  4. icon dans treeview ou listview
    Par Sebinou dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2004, 01h29

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