[OleDB] DB-Daten in einem Treeview anzeigen

Public Sub RefreshTree()
    Dim DB_OleDBCommand As New System.Data.OleDb.OleDbCommand
    Dim DB_OleDBReader As System.Data.OleDb.OleDbDataReader

    ' wenn Datenverbindung offen Daten von DB holen
    If frmMain.DB_OleDBConnection.State = System.Data.ConnectionState.Open Then
        With DB_OleDBCommand
            .CommandText = "SELECT ID, Name FROM Users ORDER BY Name"
            .Connection = frmMain.DB_OleDBConnection
            DB_OleDBReader = .ExecuteReader()
        End With

        Dim tnRootNode As TreeNode
        Dim tnObjectNode As TreeNode

        ' TreeView leeren
        tvObjects.Nodes.Clear()

        ' Rootnode anlegen
        tnRootNode = tvObjects.Nodes.Add("Users")

        ' Daten aus DB in TreeView füllen
        Do While (DB_OleDBReader.Read())
            tnObjectNode = tnRootNode.Nodes.Add(DB_OleDBReader.Item("Name").ToString)
            ' ID in das Node-Tag schreiben, für spätere Referenzierung des Datensatzes
            tnObjectNode.Tag = DB_OleDBReader.Item("ID")
        Loop

        ' Verbindung schließen
        DB_OleDBReader.Close()

        ' Obj. löschen
        DB_OleDBCommand.Dispose()
        DB_OleDBCommand = Nothing

        ' Rootnode aufklappen
        tnRootNode.Expand()
    End If
End Sub

Zugriff auf selektierte Node

' allgemein
Dim node As TreeNode = MyTreeView.SelectedNode
  
If node Is Not Nothing Then
   ...
End If

' über MouseClick-Ereignis
Private Sub tvObjects_NodeMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvObjects.NodeMouseClick
    Dim s As String = e.Node.Text
End Sub

Allgemeines zur Arbeit mit dem TreeView

  1. Knoten (Nodes) erstellen
  2. Dim tnNode As TreeNode
    
    tnNode = tvObjects.Nodes.Add("NodeName")
    
  3. Unterknoten (SubNodes) erstellen
  4. Dim tnRootNode As TreeNode
    Dim tnObjectNode As TreeNode
    
    tnRootNode = tvObjects.Nodes.Add("RootNode")
    tnObjectNode = tnRootNode.Nodes.Add("SubNode")
    
  5. Zurgiff auf einen Knoten (Node)
  6. Dim tnNode As TreeNode
    
    tnNode = tvObjects.Nodes(0) 'Index der Node im selben Zweig
    
  7. Knoten aufklappen (Node expandieren)
  8. Dim tnRootNode As TreeNode
    Dim tnObjectNode As TreeNode
    
    tnRootNode = tvObjects.Nodes.Add("RootNode")
    tnObjectNode = tnRootNode.Nodes.Add("SubNode")
    
    ' Rootnode aufklappen, damit die untergeordnete Node "SubNode" zu sehen ist
    tnRootNode.Expand()
    
  9. TreeView komplett löschen
  10. tvObjects.Nodes.Clear()