怎样才能使treeview 每次只展开一个节点
比如a
--a1
--a2
--a3
b
--b1
--b2
c
--c1
现在每次只展开一个子节点
比如
现在状态时
a
--a1
--a2
--a3
b
c
然后我点了c节点后,要把c子节点展开,但是要把a节点收起来
也就是点了c节点后,效果为
a
b
c
--c1
不能用ajax,否则会有些延迟,效果不好 --------------------编程问答-------------------- sf```关注 --------------------编程问答-------------------- up学习 --------------------编程问答-------------------- 这个还没试过。楼主你试加个判断呢。 --------------------编程问答-------------------- 这个可太麻烦了 首先要先判断 你点的节点是位于哪一层的
然后还要判断 这属于这一层到底有多少个平级节点是展开的(主要就是这个 好象没有这个属性)
然后再写 当点击这个节点的时候 收缩别的所有平级节点 --------------------编程问答-------------------- 在展开结点前 关闭其他所有结点
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
this.treeView1.CollapseAll(); //关闭所有结点
e.Node.Toggle();//展开被点结点
} --------------------编程问答-------------------- 找个导航菜单研究一下 --------------------编程问答-------------------- :-) --------------------编程问答-------------------- 我们的菜单只有两层,就是我上面的例子 --------------------编程问答-------------------- 我写了个代码,大部分浏览器可以,就是在xp上,头节点前面的图标会消失 很郁闷。。
var elements= document.getElementsByTagName("a");
var pic=new Array();
var func=new Array();
for (var i=0;i<elements.length;i++)
{
if (elements[i].id.indexOf('tvwSystemn')>=0)
{
pic[pic.length]=elements[i].id;
func[pic.length]=elements[i].href;
elements[i].onclick=function folder()
{
for (var i=0;i<pic.length;i++)
{
if (pic[i]!=this.id)
{
document.getElementById(pic[i]+'Nodes').style.display='none';
if (i==(pic.length-1))
document.getElementById(pic[i]).childNodes[0].src=tvwSystem_Data.images[14];
//this.childNodes[0].src=tvwSystem_Data.images[17];
else if (i==0)
document.getElementById(pic[i]).childNodes[0].src=tvwSystem_Data.images[17];
else
document.getElementById(pic[i]).childNodes[0].src=tvwSystem_Data.images[11];
}
}
}
}
} --------------------编程问答-------------------- 你的treeview有几层?
如果要关闭同级的节点的话,可以循环判断。。。
关闭和当前选择节点父节点Depth相同的节点就可以了应该。
--------------------编程问答-------------------- up --------------------编程问答-------------------- mark --------------------编程问答-------------------- 怎么没有答案呀? --------------------编程问答-------------------- up --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- e.Node.parents.childrens.CollapseAll(); //关闭同级节点
e.Node.Toggle();//展开被点结点 --------------------编程问答-------------------- 你在展开节点之前先把所有的节点都关闭了就行。 --------------------编程问答-------------------- 学习了` --------------------编程问答-------------------- mark --------------------编程问答-------------------- 展开节点前,闭合所有节点。 --------------------编程问答-------------------- protected void TreeView_SWJG_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
if (e.Node.Value != 根节点)
{
foreach (TreeNode Node in e.Node.Parent.ChildNodes)
{
if(Node.Value!=e.Node.Value)
Node.Collapse();
}
}
}
--------------------编程问答-------------------- 可以是可以的,只是在加载初始化treeview时
必须知道那个节点要展开,而且要展开节点的父节点一定也要展开.....
然后在绑定treeview时把要展开的节点的展开属性设置成true即可
(别忘了父节点也要设置成展开) --------------------编程问答--------------------
经测试,管用!谢谢!
补充:.NET技术 , ASP.NET