Extjs TreePanel 完美实现
2011-06-28 17:35
330 查看
treepanel.on('change',function(node,checked){
treecheck(node,checked);//调用下列方法
});
////树形控件的选择
var treecheck=function(node,checked){
node.expand();
if(node.hasChildNodes()){
ChildWithParent(node,checked);
}
//如果是选中状态,则选中所有父节点
if(checked){
ParentWithChild1(node,checked);
}
//如果不选中
else{
ParentWithChild2(node,checked);
}
}
//选择结点,影响所有子节点
var ChildWithParent=function(node,bool){
if(node){
node.attributes.checked = bool;
if(node.hasChildNodes()){
node.eachChild(function(child){
child.ui.toggleCheck(bool);
child.attributes.checked = bool;
ChildWithParent(child,bool);
});
}
}
}
//如果是选中状态,则选中父节点---递归
var ParentWithChild1=function(node,bool){
if(node.parentNode.getUI().checkbox){
var parent=node.parentNode;
parent.attributes.checked=bool;
parent.getUI().checkbox.checked=bool;
ParentWithChild1(parent,bool);
}
}
//如果是不选中状态,则遍历父节点,如果该父节点下的所有节点都为不选中,则取消选中
var ParentWithChild2=function(node,bool){
if(node.parentNode.getUI().checkbox){
var parent=node.parentNode;
var temp=false;
parent.eachChild(function(child){
if(child.getUI().checkbox.checked==true){
temp=true;
return false;
}
});
if(!temp){
parent.attributes.checked=bool;
parent.getUI().checkbox.checked=bool;
temp=false;
ParentWithChild2(parent,bool);
}
}
}
treecheck(node,checked);//调用下列方法
});
////树形控件的选择
var treecheck=function(node,checked){
node.expand();
if(node.hasChildNodes()){
ChildWithParent(node,checked);
}
//如果是选中状态,则选中所有父节点
if(checked){
ParentWithChild1(node,checked);
}
//如果不选中
else{
ParentWithChild2(node,checked);
}
}
//选择结点,影响所有子节点
var ChildWithParent=function(node,bool){
if(node){
node.attributes.checked = bool;
if(node.hasChildNodes()){
node.eachChild(function(child){
child.ui.toggleCheck(bool);
child.attributes.checked = bool;
ChildWithParent(child,bool);
});
}
}
}
//如果是选中状态,则选中父节点---递归
var ParentWithChild1=function(node,bool){
if(node.parentNode.getUI().checkbox){
var parent=node.parentNode;
parent.attributes.checked=bool;
parent.getUI().checkbox.checked=bool;
ParentWithChild1(parent,bool);
}
}
//如果是不选中状态,则遍历父节点,如果该父节点下的所有节点都为不选中,则取消选中
var ParentWithChild2=function(node,bool){
if(node.parentNode.getUI().checkbox){
var parent=node.parentNode;
var temp=false;
parent.eachChild(function(child){
if(child.getUI().checkbox.checked==true){
temp=true;
return false;
}
});
if(!temp){
parent.attributes.checked=bool;
parent.getUI().checkbox.checked=bool;
temp=false;
ParentWithChild2(parent,bool);
}
}
}
相关文章推荐
- ExtJs Treepanel 实现整个树形菜单刷新
- ExtJs3.4 TreePanel级联勾选节点并实现父节点节点半选
- Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
- Extjs中通过Tree加载右侧TabPanel具体实现
- Extjs中通过Tree加载右侧TabPanel具体实现
- extjs treepanel的ctrl、shift多选、连选功能实现
- asp.net mvc + ExtJs 实现无限级TreePanel 加载、添加、编辑、删除
- extjs的treepanel不自动加载的实现
- extjs中treepanel和tabpanel结合实现布局
- Extjs4--Ext.tree.Panel实现可选择树
- ExtJs动态生成treepanel的Json格式
- ExtJS4.0.7 树组建treePanel简单介绍
- ExtJs动态生成treepanel的Json格式
- [JAVASCRIPT][EXTJS]直接用JSON创建树形控件(Ext.tree.TreePanel )(转)
- Extjs中通过Tree加载右侧TabPanel
- 使用 ExtJS TreePanel 从 ASP.NET AJAX Web Service 获取、绑定和显示树
- extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
- extjs.treePanel在ie9下滚动条的显示问题