Asp.net 在TreeView中,一次一个节点
我有这样的树状视图:Asp.net 在TreeView中,一次一个节点,asp.net,treeview,nodes,Asp.net,Treeview,Nodes,我有这样的树状视图: 1. 1.1 1.2 2. 2.1 2.2 .... 我想要完成的是,当用户单击父节点(例如节点1)时,除所选节点(节点1)外,每隔一个父节点折叠一次,换句话说,一次只展开一个子树 我正在从数据库填充菜单。 所以我在父节点填充部分中使用了这段代码 MenuTreeView.Nodes.Add(newNode); newNode.PopulateOnDemand = true; newNod
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;
但这不起作用。在代码隐藏中使用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
在代码隐藏中,使用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
由于没有人给我答案或正确的建议,在尝试和做了一些研发之后,我得到了解决方案。 发帖,希望对别人有帮助 在(OnTerenodeExpand)节点展开事件上声明:
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();
}
}
附言:@AakashM:-如果你连一分钱都不值,千万别费心评论
谢谢StackOverflow。由于没有人给我答案或正确的建议,在尝试并进行一些研发之后,我得到了解决方案。 发帖,希望对别人有帮助 在(OnTerenodeExpand)节点展开事件上声明:
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();
}
}
附言:@AakashM:-如果你连一分钱都不值,千万别费心评论
谢谢StackOverflow。最好的答案是,如果一个父节点展开,另一个父节点将得到collpase 在C#中:
最好的答案是,若一个父节点是展开的,那个么另一个父节点将得到collpase 在C#中:
你想干什么?什么意思?我只希望一次只能打开一个父节点。所有其他父节点的所有子节点(已展开)应在展开父节点时折叠。注释询问您已尝试的内容。堆栈溢出不是一种代码编写服务。@akashM:如果你弄错了我的朋友,我不是要求你给我代码。请给我一个关于我将创建的需求代码的想法。你试图实现什么?这意味着什么?我只希望一次只能打开一个父节点。所有其他父节点的所有子节点(已展开)应在展开父节点时折叠。注释询问您已尝试的内容。堆栈溢出不是一种代码编写服务。@akashM:如果你弄错了我的朋友,我不是要求你给我代码。请给我一个关于我将创建的需求代码的想法。Thnx mccrager,用于帮助我。但事实上这并不能解决我的问题,我的解决方案确实有效。我唯一忽略的是你发布了C#,我给了你VB.NET。我没有告诉你你的解决方案是错误的。仅针对我的具体情况(要求),它并没有给出预期的结果。就这样。你的代码可能很完美。Thnx mccrager,谢谢你的帮助。但事实上这并不能解决我的问题,我的解决方案确实有效。我唯一忽略的是你发布了C#,我给了你VB.NET。我没有告诉你你的解决方案是错误的。仅针对我的具体情况(要求),它并没有给出预期的结果。就这样。你的代码可能是完美的。