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 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(...