绑定数据到TreeView
前一阵子用到绑定TreeView的函数。(.net 2.0)
数据表中主要用到三个字段:tree_id, tree_name,follow_id
其中follow_id是上级id(可能名字取得不太贴切) 把代码存在这里,以便将来查看
以下是示例过程:
数据表中主要用到三个字段:tree_id, tree_name,follow_id
其中follow_id是上级id(可能名字取得不太贴切) 把代码存在这里,以便将来查看
以下是示例过程:
Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Imports System.Data
Imports System.Collections
Imports System
Imports System.Configuration
Imports System.IO
Public Class knowledge
Dim dbobj As New ConnSqlServer.db
先得到要用到的 DataSetImports System.Data.SqlClient
Imports System.Data
Imports System.Collections
Imports System
Imports System.Configuration
Imports System.IO
Public Class knowledge
Dim dbobj As New ConnSqlServer.db
Public Function Getknowledge() As DataSet
Dim ds As New DataSet()
Dim sql As String = "select * from iKnowledge_tree"
dbobj.ReturnDataSet(sql, ds)
Return ds
End Function
下面是两个绑定函数Dim ds As New DataSet()
Dim sql As String = "select * from iKnowledge_tree"
dbobj.ReturnDataSet(sql, ds)
Return ds
End Function
'绑定树
Public Sub BindTreeView(ByRef treeview As TreeView, ByVal isExpanded As Boolean, ByVal selectData As String)
treeview.Nodes.Clear()
Dim dataTable As New DataTable
Dim ds As New DataSet()
ds = Me.Getknowledge()
dataTable = ds.Tables(0)
Dim rowList As DataRow() = dataTable.Select("follow_id='-1'")
If (rowList.Length <= 0) Then
Return
End If
Dim rootNode As New TreeNode()
rootNode.Text = rowList(0)("tree_name").ToString()
rootNode.Value = rowList(0)("tree_id").ToString()
rootNode.Expanded = isExpanded
rootNode.Selected = True
treeview.Nodes.Add(rootNode)
'调用创建子节点的函数
CreateChildNode(rootNode, dataTable, isExpanded, selectData)
End Sub
Public Sub BindTreeView(ByRef treeview As TreeView, ByVal isExpanded As Boolean, ByVal selectData As String)
treeview.Nodes.Clear()
Dim dataTable As New DataTable
Dim ds As New DataSet()
ds = Me.Getknowledge()
dataTable = ds.Tables(0)
Dim rowList As DataRow() = dataTable.Select("follow_id='-1'")
If (rowList.Length <= 0) Then
Return
End If
Dim rootNode As New TreeNode()
rootNode.Text = rowList(0)("tree_name").ToString()
rootNode.Value = rowList(0)("tree_id").ToString()
rootNode.Expanded = isExpanded
rootNode.Selected = True
treeview.Nodes.Add(rootNode)
'调用创建子节点的函数
CreateChildNode(rootNode, dataTable, isExpanded, selectData)
End Sub
'递归创建子节点
Public Sub CreateChildNode(ByVal parentNode As TreeNode, ByVal dataTable As DataTable, ByVal isExpanded As Boolean, ByVal selectData As String)
Dim rowList As DataRow() = dataTable.Select("follow_id= '" + parentNode.Value + "'")
Dim row As DataRow
For Each row In rowList
Dim node As New TreeNode()
node.Text = row("tree_name").ToString()
node.Value = row("tree_id").ToString()
node.Expanded = isExpanded
If (node.Value = selectData) Then
node.Selected = True
End If
parentNode.ChildNodes.Add(node)
CreateChildNode(node, dataTable, isExpanded, selectData)
Next
End Sub
Public Sub CreateChildNode(ByVal parentNode As TreeNode, ByVal dataTable As DataTable, ByVal isExpanded As Boolean, ByVal selectData As String)
Dim rowList As DataRow() = dataTable.Select("follow_id= '" + parentNode.Value + "'")
Dim row As DataRow
For Each row In rowList
Dim node As New TreeNode()
node.Text = row("tree_name").ToString()
node.Value = row("tree_id").ToString()
node.Expanded = isExpanded
If (node.Value = selectData) Then
node.Selected = True
End If
parentNode.ChildNodes.Add(node)
CreateChildNode(node, dataTable, isExpanded, selectData)
Next
End Sub
End Class
调用的时候下面这样就可以了Dim knowledge As New knowledge
Sub BindTree()
knowledge.BindTreeView(Me.TreeView1, True, "-1")
End Sub
knowledge.BindTreeView(Me.TreeView1, True, "-1")
End Sub