Treeview.FindNode在2级深度不适合我

时间:2014-08-29 20:30:09

标签: sql sql-server-2008 treeview

我有一个树形视图,它有一个数据库结构:

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来查看结果存在。

1 个答案:

答案 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不是顶级节点。