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 :

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
    '---------------------------------------
    '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
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 toute sorte de chose 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 !

PS : merci de ne pas me renvoyer vers d'autres liens du site car je crois avoir fais le tour déjà ^^

number09