Module FillTreeViewXT
#Region "Load Tree View From Database"
Dim nds As TreeNodeCollection
Public Sub CreateTree(ByVal TreeView1 As TreeView, ByVal TreeViewRootName As String, _
ByVal DTable As DataTable, ByVal ColomnName As String, ByVal ColType As String, _
ByVal ColID As String, ByVal MainHeaderImageIndex As Integer)
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
Dim MainHeader As New TreeNode(TreeViewRootName)
MainHeader.Tag = 0
MainHeader.ImageIndex = MainHeaderImageIndex
MainHeader.SelectedImageIndex = MainHeader.ImageIndex
TreeView1.Nodes.Add(MainHeader)
AddSubNode(MainHeader, DTable, ColomnName, ColType, ColID)
TreeView1.EndUpdate()
TreeView1.ExpandAll()
TreeView1.Select()
FindNodeByText(TreeView1, TreeViewRootName)
End Sub
Private Sub FindNodeByText(ByVal MTree As TreeView, ByVal Mvalue As String)
MTree.ExpandAll()
Dim Node As TreeNode = MTree.Nodes.Item(0)
While Not Node Is Nothing
If Node.Text.Contains(Mvalue.Trim) Then
Node.BackColor = Color.BurlyWood
Node.Checked = True
MTree.SelectedNode = Node
Else
Node.BackColor = Color.White
Node.Checked = False
End If
Node = Node.NextVisibleNode
End While
End Sub
Private Sub AddSubNode(ByVal Node As TreeNode, ByVal DTable As DataTable, ByVal ColomnName As String, ByVal ColType As String, ByVal ColID As String)
Dim dv1 As DataView = DTable.DefaultView
Dim strt As String = String.Empty
strt = ColType & " ="
dv1.RowFilter = strt & CType(Node.Tag, Integer)
For Each drLine As DataRowView In dv1
Dim SubNode As New TreeNode(drLine(ColomnName).ToString)
SubNode.Tag = drLine(ColID).ToString
SubNode.ImageIndex = Node.Level
SubNode.SelectedImageIndex = SubNode.ImageIndex
Node.Nodes.Add(SubNode)
If Not SubNode.Tag = 0 Then
AddSubNode(SubNode, DTable, ColomnName, ColType, ColID)
End If
Next
End Sub
#End Region
End Module