本篇文章将介绍获取TreeList所有Node节点的方法,此处TreeList的数据使用数据源绑定,为动态获取,并为TreeList设置comboBox复选框,从数据库中动态选中TreeList的节点
一、首先我们先为TreeList绑定数据源,并设置KeyFieldName以及ParentFieldName
TreeList1.DataSource = DataTable1
TreeList1.KeyFieldName = "编号"
TreeList1.ParentFieldName = "上级编号"
二、从数据库中查询需要将复选框勾选的条件或数据,这里不多赘述,只是调用BLL查询数据库然后将返回结果放在一个DataTable中。这里起名为dt明细
三、先遍历第一层TreeList
For i As Integer = 0 To TreeList1.Rows.Count - 1
For j As Integer = 0 To dt明细.Rows.Count - 1
If TreeList1.Nodes(i).Item("编号").ToString = dt明细.Rows.Item(j).Item("编号").ToString Then
'将节点设置为选中
TreeList1.Nodes.Item(i).CheckState = CheckState.Checked
Exit For
End If
Next j
'调用递归函数
getAllNodes(TreeList1.Nodes(i))
Next i
四、接下来开始编写递归方法getAllNodes()
Public Sub getAllNodes(ParentNode As TreeListNode)
Dim i As Integer = 0
Try
'node表示当前节点,用以查询是否存在下级节点
For Each node As TreeListNode In ParentNode.Nodes
For j As Integer = 0 To dt明细.Rows.Count - 1
If TreeList1.Nodes(i).Item("编号").ToString = dt明细.Rows.Item(j).Item("编号").ToString Then
'将节点设置为选中
TreeList1.Nodes.Item(i).CheckState = CheckState.Checked
Exit For
End If
Next j
'判断是否存在下级节点
If node.Nodes.Count > 0 Then
'查询下一级节点
getAllNodes(node)
End If
i = i + 1
Next
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
以上完成了本篇文章的需求,本人还是编程小白,如有错误以及更好的方法,希望大家多多指正,感谢您的阅读