这是我收藏的一篇文章 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '在此处放置初始化页的用户代码 If Not IsPostBack Then Dim ds As New DataSet Dim CN As New SqlConnection '初始化连接字符串() CN.ConnectionString = mysqlDB CN.Open() Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from tbTree", CN) adp.Fill(ds) Me.ViewState("ds") = ds ' 调用递归函数(, 完成树形结构的生成) AddTree(0, Nothing) End If End Sub Private Sub AddTree(ByVal ParentID As Integer, ByVal pNode As TreeNode) Dim ds As DataSet ds = Me.ViewState("ds") Dim dvTree As New DataView dvTree = New DataView(ds.Tables(0)) '过滤ParentID,得到当前的所有子节点 dvTree.RowFilter = "PARENTID = " + ParentID.ToString Dim Row As DataRowView For Each Row In dvTree Dim Node As New TreeNode If pNode Is Nothing Then '判断是否根节点 '添加根节点 ' Node.Text = Row("ConText").ToString() Node.ID = Row("ID") Node.Text = "<A target='mainzu' href='999.aspx?id=" & Row("ID") & "&ParentID=" & Row("parentID") & "'>" & Row("ConText").ToString() & "</A>" TreeView1.Nodes.Add(Node) Node.Expanded = True Node.CheckBox = True '再次递归 AddTree(Int32.Parse(Row("ID").ToString()), Node) Else '̀添加当前节点的子节点 ' Node.Text = Row("ConText").ToString() ' Node.Text = "<A target='mainzu' href='999.aspx?id=" & Row("ID") & "&ParentID=" & Row("parentID") & "'>" & Row("ConText").ToString() & "</A>" Node.Text = Row("context") Node.ID = Row("ID") pNode.Nodes.Add(Node) Node.Expanded = True Node.CheckBox = True '再次递归 AddTree(Int32.Parse(Row("ID").ToString()), Node) If Node.Checked = True Then Response.Write(Node.CheckBox.ToString) End If End If Next End Sub Private Sub Check(ByVal tn As TreeNode) Dim t As TreeNode For Each t In tn.Nodes t.Checked = tn.Checked If t.Nodes.Count <> 0 Then Check(t) End If Next t End Sub 'Check Private Sub TreeView1_Check1(ByVal sender As Object, ByVal e As Microsoft.Web.UI.WebControls.TreeViewClickEventArgs) Handles TreeView1.Check Check(TreeView1.GetNodeFromIndex(e.Node)) End Sub Private Sub FindCheckTrue(ByVal tn As TreeNode) Dim t As TreeNode For Each t In tn.Nodes If t.Checked = True Then Dim clientID As String clientID = t.ID '遍历整个树,得到checked=true的节点id Response.Write(clientID & "<br>") '<-------显示ID End If If t.Nodes.Count <> 0 Then FindCheckTrue(t) End If Next t End Sub 'FindCheckTrue Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Int32 For i = 0 To Me.TreeView1.Nodes.Count - 1 If (Me.TreeView1.Nodes(i).Checked = True) Then Response.Write(Me.TreeView1.Nodes(i).ID & "<br>") '<-------显示ID End If FindCheckTrue(Me.TreeView1.Nodes(i)) Next End Sub
webctrl_client目录未复制到 Web 应用程序根目录,是最常见问.其它MSDN讲得很清楚了
'在此处放置初始化页的用户代码 If Not IsPostBack Then
Dim ds As New DataSet
Dim CN As New SqlConnection
'初始化连接字符串()
CN.ConnectionString = mysqlDB
CN.Open()
Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from tbTree", CN)
adp.Fill(ds)
Me.ViewState("ds") = ds
' 调用递归函数(, 完成树形结构的生成)
AddTree(0, Nothing)
End If End Sub Private Sub AddTree(ByVal ParentID As Integer, ByVal pNode As TreeNode) Dim ds As DataSet
ds = Me.ViewState("ds") Dim dvTree As New DataView
dvTree = New DataView(ds.Tables(0))
'过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "PARENTID = " + ParentID.ToString Dim Row As DataRowView For Each Row In dvTree
Dim Node As New TreeNode
If pNode Is Nothing Then '判断是否根节点
'添加根节点 ' Node.Text = Row("ConText").ToString()
Node.ID = Row("ID") Node.Text = "<A target='mainzu' href='999.aspx?id=" & Row("ID") & "&ParentID=" & Row("parentID") & "'>" & Row("ConText").ToString() & "</A>" TreeView1.Nodes.Add(Node) Node.Expanded = True
Node.CheckBox = True '再次递归 AddTree(Int32.Parse(Row("ID").ToString()), Node) Else '̀添加当前节点的子节点
' Node.Text = Row("ConText").ToString()
' Node.Text = "<A target='mainzu' href='999.aspx?id=" & Row("ID") & "&ParentID=" & Row("parentID") & "'>" & Row("ConText").ToString() & "</A>" Node.Text = Row("context")
Node.ID = Row("ID")
pNode.Nodes.Add(Node)
Node.Expanded = True
Node.CheckBox = True '再次递归
AddTree(Int32.Parse(Row("ID").ToString()), Node) If Node.Checked = True Then
Response.Write(Node.CheckBox.ToString)
End If End If Next End Sub Private Sub Check(ByVal tn As TreeNode) Dim t As TreeNode
For Each t In tn.Nodes
t.Checked = tn.Checked
If t.Nodes.Count <> 0 Then
Check(t)
End If
Next t End Sub 'Check Private Sub TreeView1_Check1(ByVal sender As Object, ByVal e As Microsoft.Web.UI.WebControls.TreeViewClickEventArgs) Handles TreeView1.Check
Check(TreeView1.GetNodeFromIndex(e.Node))
End Sub Private Sub FindCheckTrue(ByVal tn As TreeNode)
Dim t As TreeNode
For Each t In tn.Nodes
If t.Checked = True Then
Dim clientID As String
clientID = t.ID '遍历整个树,得到checked=true的节点id
Response.Write(clientID & "<br>") '<-------显示ID
End If
If t.Nodes.Count <> 0 Then
FindCheckTrue(t)
End If
Next t
End Sub 'FindCheckTrue Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Int32
For i = 0 To Me.TreeView1.Nodes.Count - 1
If (Me.TreeView1.Nodes(i).Checked = True) Then
Response.Write(Me.TreeView1.Nodes(i).ID & "<br>") '<-------显示ID
End If
FindCheckTrue(Me.TreeView1.Nodes(i))
Next
End Sub