ExtJS 4.2 创建带复选框的树,并且有全选反选功能
来源:互联网 发布:获取windows 7密钥 编辑:程序博客网 时间:2024/05/18 02:23
var store = Ext.create(‘Ext.data.TreeStore,{//注意:store的数据后台返回时需要加 checked:false 属性;
fields:['text','id'],
root: {
id:'root',
expanded: true,
"checked": false,
text:''
},
proxy: {
type: 'ajax',
url: url,
},
autoLoad: false
})
Ext.create('Ext.tree.Panel',{
xtype:'treepanel',//这里如果用treepicker的话,就监听不到checkChange方法
width:300,
height:300,
name:'tree',
store:store,
listeners:{
'checkChange':function(node,checked){//用此方法监听
childChecked(node,checked)
parentChecked(node,checked);
}
}
})
//反选
function parentChecked(node, checked, opts){
var upNode = node.parentNode;
if(upNode != null){
var opts = {};
opts["isPassive"] = true;
var upChecked = upNode.data.checked;
//选中状态,遍历父节点,判断有父节点下的子节点是否都全选
if(checked){
var allChecked = true;
upNode.eachChild(function (child) {
if(!child.data.checked){
allChecked = false;
return false;
}
});
upNode.set('checked', allChecked);//updateInfo()有看到这个方法,但在这不行
if(allChecked){
travelParentChecked(upNode, allChecked, opts);
}else{
//travelParentChecked(upNode, allChecked, opts);
}
}else{
if(upNode.data.checked){
upNode.set('checked', checked);
travelParentChecked(upNode, checked, opts);
}else{
//travelParentChecked(upNode, allChecked, opts);
}
}
}
}
//全选
function childChecked(node,checked){
checked?node.expand():node.collapse();
if(node.hasChildNodes()){
node.eachChild(function(n) {
n.set('checked', checked)
//n.updateInfo({checked:checked});
if(n.hasChildNodes()){
n.expand();
allChild(n,checked);
}
});
}
}
fields:['text','id'],
root: {
id:'root',
expanded: true,
"checked": false,
text:''
},
proxy: {
type: 'ajax',
url: url,
},
autoLoad: false
})
Ext.create('Ext.tree.Panel',{
xtype:'treepanel',//这里如果用treepicker的话,就监听不到checkChange方法
width:300,
height:300,
name:'tree',
store:store,
listeners:{
'checkChange':function(node,checked){//用此方法监听
childChecked(node,checked)
parentChecked(node,checked);
}
}
})
//反选
function parentChecked(node, checked, opts){
var upNode = node.parentNode;
if(upNode != null){
var opts = {};
opts["isPassive"] = true;
var upChecked = upNode.data.checked;
//选中状态,遍历父节点,判断有父节点下的子节点是否都全选
if(checked){
var allChecked = true;
upNode.eachChild(function (child) {
if(!child.data.checked){
allChecked = false;
return false;
}
});
upNode.set('checked', allChecked);//updateInfo()有看到这个方法,但在这不行
if(allChecked){
travelParentChecked(upNode, allChecked, opts);
}else{
//travelParentChecked(upNode, allChecked, opts);
}
}else{
if(upNode.data.checked){
upNode.set('checked', checked);
travelParentChecked(upNode, checked, opts);
}else{
//travelParentChecked(upNode, allChecked, opts);
}
}
}
}
//全选
function childChecked(node,checked){
checked?node.expand():node.collapse();
if(node.hasChildNodes()){
node.eachChild(function(n) {
n.set('checked', checked)
//n.updateInfo({checked:checked});
if(n.hasChildNodes()){
n.expand();
allChild(n,checked);
}
});
}
}
效果:
阅读全文
0 0
- ExtJS 4.2 创建带复选框的树,并且有全选反选功能
- JQuery之复选框的全选、全不选、反选功能
- java实现复选框的全选和反选功能
- 复选框的全选、全不选、反选
- 复选框的全选、反选、全不选
- 复选框的全选与反选
- 复选框的全选 反选
- 复选框的全选和反选
- 复选框的全选和反选
- 复选框的全选和反选
- 复选框的全选和反选
- 复选框的全选和反选
- 复选框的全选和反选
- 复选框的全选和反选
- 复选框的全选和反选
- 复选框的全选和反选
- js复选框的全选,多选,全选,全不选,反选
- 复选框全选反选
- hadoop体系结构
- 嵌入式系统概论-1.3
- linunx centos 6.5 安装redis 和ngnix
- fabric 部署 python web 应用的基本config
- elasticsearch集群快速上手搭建
- ExtJS 4.2 创建带复选框的树,并且有全选反选功能
- java并发编程学习4--forkJoin
- Android NDK开发三 JNI基础
- vue-resource和php跨域
- Android 使用jni校验应用签名sha1值,防止so文件逆向盗用
- Sift算子特征点提取、描述及匹配全流程解析
- constructor的使用 : 查看对象的构造函数
- coridc求atandmatlab仿真
- editText控件相关