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

VB.NET Discussion :

Remplir treeview avec un datatable [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Remplir treeview avec un datatable
    Bonjour, je tente de créer un petit utilitaire qui nécessite un treeview pour une lecteur simplifié (j'ai essayé le datagrid mais il manque de la lisibilité).
    Pour ce faire j'ai intérrogé notre amis Google et j'ai trouvé ce tuto :

    http://www.authorcode.com/create-tre...-using-vb-net/

    Malheureusement je ne comprends pas comment l'auteur lie la deuxième partie de son code à sa DataTable.

    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
     
        Public Sub BuildTree(ByVal dt As DataTable, ByVal trv As TreeView, ByVal expandAll As [Boolean])
            ' Clear the TreeView if there are another datas in this TreeView
            trv.Nodes.Clear()
            Dim node As TreeNode
            Dim subNode As TreeNode
            For Each row As DataRow In dt.Rows
                'search in the treeview if any country is already present
                node = Searchnode(row.Item(0).ToString(), trv)
                If node IsNot Nothing Then
                   'Country is already present
                    subNode = New TreeNode(row.Item(1).ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
                Else
                    node = New TreeNode(row.Item(0).ToString())
                    subNode = New TreeNode(row.Item(1).ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
                    trv.Nodes.Add(node)
                End If
            Next
            If expandAll Then
                ' Expand the TreeView
                trv.ExpandAll()
            End If
        End Sub
    Si une âme charitable pouvait m'expliquer, je lui en serais reconnaissant

    Snowjia

    Edit : Je bosse sous Visual Studio 2010.

  2. #2
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     node = Searchnode(row.Item(0).ToString(), trv)
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Function Searchnode(ByVal nodetext As String, ByVal trv As TreeView) As TreeNode
            For Each node As TreeNode In trv.Nodes
                If node.Text = nodetext Then
                    Return node
                End If
            Next
        End Function
    cherche dans le premier niveau de la TreeView la valeur de nodetext =row.Item(0).ToString() qui est Country .
    -------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     If node IsNot Nothing Then
                   'Country is already present
                    subNode = New TreeNode(row.Item(1).ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
                Else
                    node = New TreeNode(row.Item(0).ToString())
                    subNode = New TreeNode(row.Item(1).ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
                    trv.Nodes.Add(node)
                End If
    node IsNot Nothing
    ça veux dire que contry de la city est déjà dans la Treeview donc il suffit que j'ajoute la City dans le node (qui représente contry )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Country is already present
                    subNode = New TreeNode(row.Item(1).ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode
    else
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Else
                    node = New TreeNode(row.Item(0).ToString())
                    subNode = New TreeNode(row.Item(1).ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
                    trv.Nodes.Add(node)
                End If
    sinon (contry n'existe pas dans la teeview ) il crée le node dans le niveau 1 (contry ) avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     node = New TreeNode(row.Item(0).ToString())
    et il ajoute dedans le node de city

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      subNode = New TreeNode(row.Item(1).ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
    et il ajoute le node (contry ) a la TeeView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      trv.Nodes.Add(node)
    j’espère que j'ai bien expliqué

  3. #3
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    si tu veux remplir ton TreeView tu pour faire une simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     For Each row As DataRow In dt.Rows
    et avant il faut savoir la structure (exemple :contry /City )

  4. #4
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci tes explications sont claires mais maintenant je comprends pas comment choisir la bonne DataTable :
    Je suppose que c'est dans la déclaration, avec les attributs mais je ne comprends pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub BuildTree(ByVal dt As DataTable, ByVal trv As TreeView, ByVal expandAll As [Boolean])
    Avec :
    je suppose qu'il faut remplacer le dt par le nom de ma dataTable, mais je ne n'arrive pas à l'utiliser avec le Treeview.

    Snowjia

  5. #5
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    DataTable de ton Dataset.

    tu peux me donner la structure des tables qui tu veux utiliser pour alimenter la TreeView

  6. #6
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Biensur, la structure de ma DataTable ( nommé DataTable et mis à jour par access) est :
    nom, code_site, ID, type_machine, nom_site
    et je souhaiterai obtenir un treeview de ce genre :

    nom_site1
    - nom1
    - nom2
    - nom3
    nom_site2
    - nom4
    - nom5
    nom_site3
    - nom6

    De façon à avoir une liste de site avec chaque une de leurs machines.

    pour le treeview j'utilise que deux colonnes.

  7. #7
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    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
      Public Sub BuildTree(ByVal dt As DataTable, ByVal trv As TreeView, ByVal expandAll As [Boolean])
            ' Clear the TreeView if there are another datas in this TreeView
            trv.Nodes.Clear()
            Dim node As TreeNode
            Dim subNode As TreeNode
            For Each row As DataRow In dt.Rows
                'search in the treeview if any country is already present
                node = Searchnode(row.Item("nom_site").ToString(), trv) '
                If node IsNot Nothing Then
                    'Country is already present
                    subNode = New TreeNode(row.Item("nom").ToString())
                    'Add cities to country
                    node.ChildNodes.Add(subNode)
     
                Else
                    node = New TreeNode(row.Item(0).ToString())
                    subNode = New TreeNode(row.Item(1).ToString())
                    'Add cities to country
                    node.ChildNodes.Add(subNode)
                    trv.Nodes.Add(node)
                End If
            Next
            If expandAll Then
                ' Expand the TreeView
                trv.ExpandAll()
            End If
        End Sub
        Private Function Searchnode(ByVal nodetext As String, ByVal trv As TreeView) As TreeNode
            For Each node As TreeNode In trv.Nodes
                If node.Text = nodetext Then
                    Return node
                End If
            Next
        End Function

  8. #8
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci j'ai des erreurs ligne 13 et 19 :
    childnodes n'est pas un membre de "System.windows.form.treenode
    j'ai essayer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     node.Nodes.add(subNode)
    mais le treeview reste vierge

    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
     
        Public Sub BuildTree(ByVal dt As DataTable, ByVal trv As TreeView, ByVal expandAll As [Boolean])
            ' Clear the TreeView if there are another datas in this TreeView
            trv.Nodes.Clear()
            Dim node As TreeNode
            Dim subNode As TreeNode
            For Each row As DataRow In dt.Rows
                'search in the treeview if any country is already present
                node = Searchnode(row.Item("nom_site").ToString(), trv) '
                If node IsNot Nothing Then
                    'Country is already present
                    subNode = New TreeNode(row.Item("nom").ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
     
                Else
                    node = New TreeNode(row.Item("nom_site").ToString())
                    subNode = New TreeNode(row.Item("nom").ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
                    trv.Nodes.Add(node)
                End If
            Next
            If expandAll Then
                ' Expand the TreeView
                trv.ExpandAll()
            End If
        End Sub
        Private Function Searchnode(ByVal nodetext As String, ByVal trv As TreeView) As TreeNode
            For Each node As TreeNode In trv.Nodes
                If node.Text = nodetext Then
                    Return node
                End If
            Next
        End Function
    voici un screen de ma source de donnée (je ne suis pas certain de bien l'avoir faite )




    je me pencherai sur le treeview samedi. La je vais fêter mon bac
    Snowjia

  9. #9
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    Vérifier que ton DataTable contient des données.

    voila j'ai testé le code avec
    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
     
     Public Sub BuildTree(ByVal dt As DataTable, ByVal trv As TreeView, ByVal expandAll As [Boolean])
            ' Clear the TreeView if there are another datas in this TreeView
            trv.Nodes.Clear()
            Dim node As TreeNode
            Dim subNode As TreeNode
            For Each row As DataRow In dt.Rows
                'search in the treeview if any country is already present
                node = Searchnode(row("nom_site").ToString(), trv) '
                If node IsNot Nothing Then
                    'Country is already present
                    subNode = New TreeNode(row("nom").ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
     
                Else
                    node = New TreeNode(row("nom_site").ToString())
                    subNode = New TreeNode(row("nom").ToString())
                    'Add cities to country
                    node.Nodes.Add(subNode)
                    trv.Nodes.Add(node)
                End If
            Next
            If expandAll Then
                ' Expand the TreeView
                trv.ExpandAll()
            End If
        End Sub
        Private Function Searchnode(ByVal nodetext As String, ByVal trv As TreeView) As TreeNode
            For Each node As TreeNode In trv.Nodes
                If node.Text = nodetext Then
                    Return node
                End If
            Next
            Return Nothing
     
        End Function
    voila une fonction juste pour tester mon 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
    Function GetTable() As DataTable
            ' Create new DataTable instance.
            Dim table As New DataTable
            ' Create two typed columns in the DataTable.
            table.Columns.Add("nom", GetType(String))
            table.Columns.Add("nom_site", GetType(String))
     
            table.Rows.Add("gmail", "google.com")
            table.Rows.Add("googleplus", "google.com")
            table.Rows.Add("flick", "yahoo.fr")
            table.Rows.Add("mail", "yahoo.fr")
            table.Rows.Add("play", "google.com")
            Return table
        End Function
    et voila l'appel pour le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim dt As DataTable = GetTable()
            BuildTree(dt, TreeView1, False)
    bon courage et félicitation pour ton BAC

    voila l'aperçu
    Images attachées Images attachées  

  10. #10
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Juillet 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Merci :)
    J'ai utilisé votre code et approfondi mes connaissances sur les datasets et datatables pendant les deux derniers jours ... je suis arrivé à mes fins. Merci beaucoup.
    Je passe le sujet en Résolu, en espérance qu'il puisse aider d'autres débutants.
    Snowjia

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

Discussions similaires

  1. Remplir TreeView avec les noms des dossiers
    Par Onimaru dans le forum Langage
    Réponses: 3
    Dernier message: 24/11/2012, 16h51
  2. [c#] Remplir un DataGridView avec plusieurs DataTable
    Par macfred dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/02/2010, 11h02
  3. Remplir un dataGrid avec un dataTable
    Par loic20h28 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/08/2008, 11h39
  4. Réponses: 2
    Dernier message: 09/07/2007, 13h09
  5. Réponses: 5
    Dernier message: 05/07/2007, 09h01

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