我有一个树形视图,它有一个数据库结构:
Id Unit ParentOrganizationalUnitId Level
1 City wide NULL 0
219 Finance Division 218 1
4 City Hall Client Services 3 2
这不是所有数据,这只是为了参考目的而显示的三个级别。
For Each row In SearchTag
Dim parentNode As New TreeNode
If row.Level = 0 Then
parentNode.Text = row.SearchTag.ToString
parentNode.Value = row.Id.ToString
trvSearchTag.Nodes.Add(parentNode)
ElseIf row.Level = 1 Then
Dim childNode As New TreeNode
Dim parentchildNode As New TreeNode
childNode.Text = row.SearchTag.ToString
childNode.Value = row.Id.ToString
parentchildNode = trvSearchTag.FindNode(row.ParentSearchTagID)
If Not parentchildNode Is Nothing Then
parentchildNode.ChildNodes.Add(childNode)
End If
ElseIf row.Level = 2 Then
Dim childNode1 As New TreeNode
Dim parentchildNode1 As New TreeNode
childNode1.Text = row.SearchTag.ToString
childNode1.Value = row.Id.ToString
parentchildNode1 = trvSearchTag.FindNode(row.ParentSearchTagID)
If Not parentchildNode1 Is Nothing Then
parentchildNode1.ChildNodes.Add(childNode1)
End If
End If
Next
我有这个代码^^^^,相应地填充树视图。问题是我的findnode函数只在0级和1级工作时才找到它没有返回的2级选项?为什么这样做?
旁注。 由于业务需求,结构不能改变 代码可以改变。 我检查以确定何时查找父ID为3的节点,在搜索之前树视图中确实存在3,因此它相应地添加在级别1上。通过调试代码并通过运行SPROC来查看结果存在。
答案 0 :(得分:0)
假设您正在使用WebForms TreeView
控件:
FindNode
方法将节点的路径作为参数,而不仅仅是节点的值。
所以,假设你的树看起来像这样:
City wide
Finance Division
City Hall Client Services
...并且每个节点都有适当的ID作为其Value属性,找到City Hall Client Services
的代码看起来像这样:
orgTreeView.FindNode("1/219/4")
就是这样:
orgTreeView.FindNode("4")
...将无效,因为4
不是顶级节点。