Comment ajouter un niveau dans un treeview vb.net (bdd sql server)

number09 - 4 déc. 2012 à 15:49
 Utilisateur anonyme - 5 déc. 2012 à 00:42
[b]Bonjour,

Je suis en découverte des treeviews actuellement et comment dire... je suis quelque peu en galère =D
Je vous expose mon problème :

J'ai une BDD (SQL Server) contenant 3 tables et pouvant en contenir plus par la suite. Pour l'instant j'ai :
- une table T_DEPARTEMENT avec : id_departement (PK int); nom_dpt(varchar)
- une table T_SERVICE avec : id_service (PK int); nom_service(varchar); id_departement(FK)
- une table T_LABO_GRPE avec : id_labo_grpe(PK int); nom_labo_grpe(varchar)
id_service(FK int)

J'ai, depuis cette base, créé un treeview me donnant la liste des départements et des services par arborescence ce qui donne cela :/b

    '---------------------------------------
    'Chargement de l'arbre des départements
    '---------------------------------------
    Protected Sub Charger_Departement()
        'Dim compteur_node As Integer
        Dim tv_node As TreeNode
        Dim tv_sous_node As TreeNode
        'Dim tv_sous_sous_node As TreeNode
        Dim phsel2 As String
        'Dim phsel3 As String
        Dim mydataadapter As Data.SqlClient.SqlDataAdapter
        Dim mydataview As Data.DataView
 
        'creation  du dataset
        mydataset = New Data.DataSet()
 
        'Mise à zéro du compteur de noeuds
        'compteur_node = 0
 
        'remplissage de la liste des départements
        '--------------------------------------
        phsel = " SELECT DISTINCT t_departement.id_departement,t_departement.nom_dpt  FROM t_departement, t_service "
        phsel phsel + " WHERE t_departement.id_departement t_service.id_departement"
        phsel = phsel + " ORDER BY id_departement"
        mydataset = New Data.DataSet()
        mydataadapter = New Data.SqlClient.SqlDataAdapter(phsel, connect_bd)
 
        mydataadapter.Fill(mydataset, "departement")
        mydataview = mydataset.Tables("departement").DefaultView
        Dim departement As Int16
        For departement = 0 To mydataview.Count - 1
            If Not IsDBNull(mydataview(departement)(0)) Then
                tv_node = New TreeNode
                tv_node.Value = mydataview(departement)(0)
                tv_node.Text = mydataview(departement)(1)
                Me.tv_test_trombi.Nodes.Add(tv_node)
                'Sélection du noeud du département courant
                tv_test_trombi.Nodes(departement).Select()
 
                'Remplissage de la liste des services pour le département
                phsel2 = " SELECT t_service.id_service,t_service.nom_service FROM t_service "
                phsel2 = phsel2 + " WHERE t_service.id_departement=" & mydataview(departement)(0)
                phsel2 = phsel2 + " ORDER BY id_service"
                mycommand = New Data.SqlClient.SqlCommand(phsel2, connect_bd)
                mydataread = mycommand.ExecuteReader()
                Do While mydataread.Read()
                    tv_sous_node = New TreeNode
                    tv_sous_node.Value = mydataread(0)
                    tv_sous_node.Text = mydataread(1)
                    tv_test_trombi.SelectedNode.ChildNodes.Add(tv_sous_node)
                Loop
                mydataread.Close()
            End If
            'Suppression de la sélection du noeud du département courant
            tv_test_trombi.Nodes(departement).Selected = False
        Next
    End Sub


[b]Jusqu'ici tout roule et pas de problème mais...
Mon problème et que je souhaite à partir de cela ajouter un troisième niveau de noeuds contenant les informations sur mes labo_groupe qui sont des "enfants" de services.
Et là... c'est le drame ! blocage... je suis dessus depuis 1 semaine en essayant toutes sortes de choses mais je ne vois pas comment faire alors, je tire la sonnette d'alarme et vous demande A L'AIDE !!

J'espère que j'ai été assez explicite dans l'exposition de mon problème et j'attends maintenant vos réponses svp =)

Je vous remercie !/b

number09
A voir également:

1 réponse

Utilisateur anonyme
5 déc. 2012 à 00:42
Bonjour,

je souhaite à partir de cela ajouter un troisième niveau de noeuds

Je n'ai pas lu ton code en profondeur par manque de temps.
Mais je constate que tu utilises la fonction Add (oui car ce n'est pas une méthode) de ton treeview à tours de bras sans récupérer le noeud qu'elle renvoie.
C'est dommage car ce serait à partir de ce noeud récupéré auquel tu peux rajouter des 'enfants'.
dim mon_nouveau_noeud as treenode =  Me.tv_test_trombi.Nodes.Add(tv_node)
mon_nouveau_noeud.Add(...
0
Rejoignez-nous