使特定节点根据其子节点的导航URL进行扩展

时间:2009-11-08 03:06:20

标签: asp.net vb.net treeview

所以我有一个TreeView,它有大约7个父节点,每个节点有3-5个子节点。单击导航到URL时,所有这些子节点。我想要做的是让一个父节点根据URL和要折叠的其他父节点自动展开。

如果不清楚,这是一个例子:

Root
 |
 |--Admin
 |  |
 |  |--Add.aspx
 |  |--Delete.aspx
 |
 |
 |
 |--Purchases
    |
    |--Orders.aspx
    |--Stock.aspx

假设用户点击了Orders.aspx,这会将它们导航到该页面,当它发生时,我希望树视图折叠所有父节点,并展开当前的父节点。因此管理员将崩溃,购买将会扩大。

到目前为止我的尝试是:

Protected Sub resize(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles TreeView1.Load
    For Each node As TreeNode In (CType(sender, TreeView)).Nodes
        If node.NavigateUrl = GetCurrentPage() Then
            For Each parentN As TreeNode In (CType(sender, TreeView)).Nodes
                If Not (parentN.Parent.Selected = True And node.Parent.Text = parentN.Parent.Text) Then
                    parentN.Collapse()
                Else : parentN.Expand()
                End If
            Next
        End If
    Next
End Sub


Public Shared Function GetCurrentPage() As String
    Return System.IO.Path.GetFileName(HttpContext.Current.Request.Url.AbsolutePath).ToLower
End Function

我不确定该怎么做。

1 个答案:

答案 0 :(得分:1)

除非你的树比你描述的更复杂,为什么这个循环不起作用?

For Each node As TreeNode In (CType(sender, TreeView)).Nodes
    If node.NavigateUrl = GetCurrentPage() Then
        node.Expand()
    Else
        node.Collapse()
    End If
Next