我有这样的树视图:
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;
但这不起作用。
答案 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;
}