说说碰到的问题,checkbox不会级联更新checked状态, 更不会触发treegrid的事件?
怎么办?
如上图,代码就一句话,封装全部在后台。若只是需要表现级联结构,建议直接用tree更简单。
其他都好办,最后一点收尾,发现点 [ 多选框 ] 不会触发onClickRow事件,而这个 checkbox 并没有绑定事件,查看easyUI的源码,就是2句话,1.2.3版本的在解析参数的
if(row.checked){
cc.push("<input type="checkbox" checked="checked"/>");
}else{
cc.push("<input type="checkbox"/>");
}
也不能直接 在这里加,那就写死了。
解决方法在下面,注解1和2:
其他地方可以无视,关键在1,绑定checkbox 事件到
function relatedTreeGridData(param){
$('#'+param.tgId).treegrid({
title:'所含权限',
// width:500,
// height:400,
nowrap: false,
rownumbers: true,
animate:true,
collapsible:true,
treeField:'name',
idField:'id',
// url:'treegrid_data.json',
singleSelect : false,
frozenColumns:[[
{field:'ck',checkbox:true}
]],
columns:[[
]],
onExpand:function(node){
//$.post
},
onClickRow:function(row){
//【2】级联更新checkbox_checked状态
var body=$('#'+param.tgId).datagrid("getPanel").find("div.datagrid-body");
var tr=body.find("tr[node-id="+row.id+"]");
var flag = tr.hasClass("datagrid-row-selected") ? true : false;
if(row.children){
$.each(row.children,function(index1,value1){
tr=body.find("tr[node-id="+value1.id+"]");
if(flag){
tr.addClass("datagrid-row-selected");
tr.find("div.datagrid-cell-check input[type=checkbox]").attr("checked",true);
}else{
tr.removeClass("datagrid-row-selected");
tr.find("div.datagrid-cell-check input[type=checkbox]").attr("checked",false);
}
if(value1.children){
$.each(value1.children,function(index2,value2){
tr=body.find("tr[node-id="+value2.id+"]");
if(flag){
tr.addClass("datagrid-row-selected");
tr.find("div.datagrid-cell-check input[type=checkbox]").attr("checked",true);
}else{
tr.removeClass("datagrid-row-selected");
tr.find("div.datagrid-cell-check input[type=checkbox]").attr("checked",false);
}
});
}
});
}
}
});
$('#'+param.tgId).treegrid({columns:new Array(param.columns)}).treegrid("loadData",param.records);
//【1】treegrid checkbox绑定onClickRow事件
var _57f=$('#'+param.tgId).datagrid("getPanel");
var body=_57f.find("div.datagrid-body");
body.find("div.datagrid-cell-check input[type=checkbox]").unbind(".treegrid").bind("click.treegrid",function(e){
});
$.each(param.records,function(index1,value1){
_5b9('#'+param.tgId,value1.id);
$.each(value1.children,function(index2,value2){
_5b9('#'+param.tgId,value2.id);
$.each(value2.children,function(index3,value3){
_5b9('#'+param.tgId,value3.id);
});
});
});
}
that's all.
Comments | NOTHING