欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ext TreePanel树节点操作

程序员文章站 2022-05-31 19:21:42
1、全部展开 tree.expandAll();2、全部收缩 tree.collapseAll();3、得到父节点 node.parentNode4、判断是否有父节点 node.parentNode==null5、判断是否有子节点 node.hasChildNodes()6、获取下一级所有子节点 n ......

1、全部展开 tree.expandall();
2、全部收缩 tree.collapseall();
3、得到父节点 node.parentnode
4、判断是否有父节点 node.parentnode==null
5、判断是否有子节点 node.haschildnodes()
6、获取下一级所有子节点 node.eachchild(function(child) { })
7、获取选择的节点 tree.getselectionmodel().getselectednode()
8、设置选中节点 node.select()
9、上移节点 node.selectprevious();
10、下移节点 node.selectnext();
11、获取节点id node.id
12、获取节点值 node.text
13、获取节点提示 node.attributes.qtip

带选择框
14、获取选中的的节点
var check= tree.getchecked();
ext.each(check ,function(node){})

15、获取是否选择 node.getui().checkbox.checked;
16、设置节点选择 node.ui.togglecheck(true); //显示选中 node.attributes.checked = true; //赋值


17、设置一个新的节点 
var newnode=new ext.tree.treenode({id:'id',text:'text',iconcls:'icon-group',qtip:'tip'}); iconcls 导入的是css设置的背景图片(节点图标)
css写法: .x-tree-node-leaf .icon-group{ background-image:url(group.png);} 前.x-tree-node-leaf必写

18、插入新的节点 node.appendchild(newnode);
19、删除节点 node.remove(); 

20 

这里说的选中是指鼠标点击一个节点后,节点那一行出现浅蓝色背景的选中,而非checkbox的勾选

方法

ext.tree.treepanel.getselectionmodel().getselectednode();

ext.tree.treepanel.getselectionmodel()获得的是一个treeselectionmodel对象,

这个treeselectionmodel目前在ext中有两个ext.tree.defaultselectionmodel和ext.tree.multiselectionmodel

ext.tree.multiselectionmodel的获取选中节点的方法是getselectednodes (),这个返回的是节点数组,ext.tree.defaultselectionmodel.getselectednode()返回的是单个节点对象

21 选中节点和父节点

1)、父节点选择

function parentclick(node)
{
var parent=node.parentnode; //获取父节点
var flag=node.getui().checkbox.checked; //判断是否选中
if(parent!=null ) //父节点不为空
{
parent.ui.togglecheck(flag); //选中
parent.attributes.checked = flag; //给值
parentclick(parent); //递归调用选中父节点
}
}

2)、选择子节点

function treeclick(node)

var flag=node.getui().checkbox.checked; //获取选中状态
if (node.haschildnodes()) { //是否有子节点
node.eachchild(function(child) { //循环下一级的所有子节点
child.ui.togglecheck(flag); //选中
child.attributes.checked = flag; //赋值
treeclick(child); //递归选中子节点
});
}
}

3)、2个函数合并执行

function check(node)
{
tree.suspendevents(); //暂停所有监听事件的执行
treeclick(node);
parentclick(node);
tree.resumeevents(); //重新开始所有监听事件的执行 
}

注:

选中事件发生在子节点,但要通过togglecheck()改变其父节点未被选中的状态,而一旦改变了父节点未被选中状态为选中状态,就会激发树中的<checkchange handler="check(node)" />事件,每次激发,传入的节点值node一直在改变,陷入一个死循环。因此要加入suspendevents()停止监听事件,执行完后再恢复监听

22 如果使用ext.quicktips.init()替换tree.expandall(),则只显示根节点。