ExtJS 4.2 创建带复选框的树,并且有全选反选功能
2017-08-19 16:20
519 查看
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);
}
});
}
}
效果:
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);
}
});
}
}
效果:
相关文章推荐
- JavaScript--点击按钮实现复选框全选和反选功能
- JQuery之复选框的全选、全不选、反选功能
- java实现复选框的全选和反选功能
- JQuery实现列表中复选框全选反选功能封装(推荐)
- 基于jQuery实现复选框的全选 全不选 反选功能
- Javascript实现复选框(全选反选功能)
- DeveXpress ASPxGridView获取要批量删除或者批量更改的Id(AspxGridView复选框的全选|反选功能)
- js实现复选框全选和反选功能
- JQuery实现列表中复选框全选反选功能封装
- DeveXpress ASPxGridView获取要批量删除或者批量更改的Id(AspxGridView复选框的全选|反选功能)
- DeveXpress ASPxGridView获取要批量删除或者批量更改的Id(AspxGridView复选框的全选|反选功能
- JQuery实现列表中复选框全选反选功能封装
- JavaScript中复选框的全选和反选功能的实现
- JQuery 中 实现复选框全选/全不选/反选功能 案例
- 基于jQuery实现复选框的全选 全不选 反选功能
- 复选框全选和反选例子
- Javscript实现表单复选框的全选功能
- 使用js实现checkbox的全选与反选功能
- javaScript实现复选框全选反选事件详解
- checkbox 全选/反选功能的 jquery插件(支持多页保持选择)