TreeView中一次有一个节点

时间:2012-01-10 12:49:46

标签: asp.net treeview nodes

我有这样的树视图:

    1.


      1.1

      1.2

    2.


      2.1

      2.2

....

我想要实现的是当用户单击父节点(例如节点1)时,除了所选节点(节点1)之外,每个其他父节点都会折叠,换句话说,一次只展开一个子树。 / p>

我从数据库填充菜单。 所以我在父节点填充部分中使用此代码。

MenuTreeView.Nodes.Add(newNode); 
newNode.PopulateOnDemand = true; 
newNode.Collapse();  
newNode.SelectAction= TreeNodeSelectAction.Expand;

但这不起作用。

3 个答案:

答案 0 :(得分:2)

由于没有人给我一个答案或正确的建议,在尝试并做了一些R& D后,我得到了解决方案。 发布它,希望它能帮助其他人。

在(OnTreeNodeExpand)节点展开事件上声明: -

protected void Node_Expand(Object sender, TreeNodeEventArgs e)
        {

            if (e.Node.Parent == null)
                return;
            string strNodeValue = e.Node.Value;
            foreach (TreeNode node in e.Node.Parent.ChildNodes)
            {
                if (node.Value != strNodeValue)
                    node.Collapse();
            }

        }

PS:@AakashM: - 如果你不值得一分钱,也不要评论。

感谢StackOverflow。

答案 1 :(得分:1)

在您的代码隐藏中使用SelectedNodeChanged事件。假设您有一个名为TreeView1的TreeView,循环遍历所有节点,将它们全部折叠,然后展开所选节点。

    Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged
        For Each tn As TreeNode In TreeView1.Nodes
            tn.Collapse()
        Next
        TreeView1.SelectedNode.Expand()
    End Sub

答案 2 :(得分:0)

最好的答案真正工作,如果一个父节点展开,其他父节点将获得collpase。

在C#中:

PAGE LOAD()
{
    Treeviewdata.CollapseAll();
}

protected void Treeviewdata_TreeNodeExpanded(object sender, TreeNodeEventArgs 
{
    e.Node.SelectAction = TreeNodeSelectAction.Expand;
}