Bonjour,

Je me tourne vers vous pour essayer de trouver une solution a mon problème qui n’est peux être pas si compliqué avec de l’expérience. J’ai écumé longuement la toile mais je trouve pas de chose exploitable dans mon cas ou je ne les comprend pas.
Je suis en cour d’écriture d’une application en VB.net (via Visual studio 2017) de saisi de matériaux dans une base de donnée. Cette application sera diffusée à des clients qui investisse dans le soft de CFAO, dont je suis formateur, intégrateur, revendeur.
Dans mon application je doit créer une arborescence de dossier. Ses infos sont stockées dans une base de donnée SQL sous la forme (ID unique ; ParentID ; Name ; Guid).

- Mon problème est que je n’arrive pas a créer l’arborescence à plus de deux niveau de façon propre. Je suis incapable de dire combien de niveau maximum il peut y avoir du fait que l’ajout de nouveau dossier et sous dossier est faisable dans le soft principale.

- Mon deuxième problème sera par la suite, quand je clic sur un des dossiers je devrais connaitre son ID dans la base SQL. Cette ID sert a associer des listes d’image ou de matériaux contenue sur une autre table. Attention je peux avoir plusieurs nom identique dans la Table SQL.
je connais l'événement click mais je ne visualise pas de façon de récupérer mon ID unique. Sur mes bouton dans une autre partie de mon programme j'utilise le TabIndex. Est ce que l'on peut faire la même dans ce cas?

Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    Private Sub TreeView1_Click(sender As Object, e As EventArgs) Handles TreeView1.Click
 
    End Sub


Je fais ma recherche SQL via une class SQLControl est celle-ci est retournée dans une variable « PUBLIC DBDT AS DATATABLE ».


Code VB.NET : 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
58
59
60
61
Public Class Texture
    Public SQL As New SQLControl
 
    Private Sub Texture_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim tnode As TreeNode
        Dim i As Integer = 0
 
        'SQL.AddParam("@item", "%" & txtSearch.Text & "%")
        LoadGrid("SELECT  *  FROM texturemenutree order by [parentID],[ID] ")
        'LoadGrid("SELECT  *  FROM texturemenutree  where [parentID] = 0")
 
        If SQL.HasException(True) Then Exit Sub
 
 
        For Each r As DataRow In SQL.DBDT.Rows
 
            If r("parentid").ToString = 0 Then
 
                tnode = TreeView1.Nodes.Add(r("name").ToString)
 
                Dim ChildID As Integer
                ChildID = r("ID").ToString
 
                Dim dr() As System.Data.DataRow
                dr = SQL.DBDT.Select("ParentID='" & ChildID & "'")
                'Dim childlist As TreeNode
 
                AddMoreChildren(dr, tnode.Index)
 
            Else
 
 
            End If
        Next
 
 
    End Sub
 
    Private Function LoadGrid(Query As String)
 
        SQL.ExecQuery(Query)
 
        ' ERROR HANDLING
        'If SQL.HasException(True) Then  Exit Function
 
        Return SQL.DBDT
 
    End Function
 
    Private Sub AddMoreChildren(ChildList, ParentLevel)
        'MsgBox(ParentLevel.ToString)
        Dim tnode As TreeNode
 
        For Each r As DataRow In ChildList
 
            tnode = TreeView1.Nodes(ParentLevel).Nodes.Add(r("name".ToString))
 
        Next
 
    End Sub
End Class

Je vous remercie d'avance de votre aide