Création et utilisation d'une treeView
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:
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:
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