2012-01-10 116 views
0

我有一个树视图这样的:一个节点时,在树视图

1. 


     1.1 

     1.2 

    2. 


     2.1 

     2.2 

.... 

我想要做到的是,当用户点击父节点(例如节点1)所有其他父节点崩溃换言之,除了选定的节点(节点1)之外,一次只扩展一个子树。

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

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

但这不起作用。

+0

你试图达致这是什么? – 2012-01-10 12:54:02

+0

的意思是? 我只想要一次只打开一个父节点。所有其他父节点的所有子节点(已扩展)都应该在展开父节点时崩溃 – Kings 2012-01-10 12:58:47

+0

该评论询问什么,如果有的话,*您*已*尝试过*。堆栈溢出不是代码写入服务。 – AakashM 2012-01-10 13:03:10

回答

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: - 从来就不愿去评论如果u r不值得,甚至一分钱。

感谢StackOverflow。

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 
+0

Thnx mccrager,试图帮助。但它实际上并没有解决我的问题。 – Kings 2012-01-10 15:02:33

+0

我的解决方案当然有用。我唯一忽略的是你发布了C#,并且给了你VB.NET。 – mccrager 2012-01-10 15:21:03

+0

我没有告诉你的解决方案是错误的。只是针对我的具体情况(要求),它没有给出预期的结果。而已。你的代码可能是完美的。 – Kings 2012-01-10 15:34:07

0

BEST ANSWER REIE IT IT WORK OUT,如果一个父节点展开,其他父节点将获得collpase。

在C#:

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

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