设置某些节点没有复选框
这里我设置的是 根节点 没有复选框
这里是一些常用操作
var setting = {
check: {
enable: true,
chkboxType: { "Y" : "", "N" : "" } //设置父节点和子节点不关联
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pid"
}
},
callback: {
onCheck: onCheck,
beforeCheck: zTreeBeforeCheck
}
};
function zTreeBeforeCheck(treeId, treeNode) {
return !treeNode.isParent;//当是父节点 返回false 不让选取
}
zNodes的数据是后台组装来的,数据结构如下
[
{"id":"***","name":"***","pid":"***","nocheck":true,"open":true},
{"id":"***","name":"***","pid":"***","checked":true}
]
下边开始设置 某些节点 禁用复选框
$.fn.zTree.init($("#workTypeTree"), setting, zNodes);
var zTreeObj = $.fn.zTree.getZTreeObj("workTypeTree");
var _node = zTreeObj.getNodes(); //获取根节点
var _nodes = zTreeObj.transformToArray(_node); //获取所有节点
if(_nodes.length>0){
for(var i=0;i<_nodes.length;i++){ //设置顶级节点 单选框禁用
if(_nodes[i].isParent){ //判断是否是父节点
//alert(_nodes[i].name);
_nodes[i].nocheck=true; //设置 禁用复选框
zTreeObj.updateNode(_nodes[i]); //更新节点
}
}
}
ztree复选框回显
1.在后台拼接的数据,拼接"checked", true
Java代码仅供参考,可根据业务自行修改
//获取到选中的节点id集合,用逗号隔开的
if(dw.indexOf(map.get("dept_id").toString()) != -1){
resultMap.put("checked", true);
}
2.使用js回显
这里的 $(’#dw’).val() 是选中的节点(用逗号隔开的)
$.fn.zTree.init($("#workTypeTree"), setting, zNodes);
var zTreeObj = $.fn.zTree.getZTreeObj("workTypeTree");
var _node = zTreeObj.getNodes(); //获取根节点
var _nodes = zTreeObj.transformToArray(_node); //获取所有节点
if(_nodes.length>0){
for(var i=0;i<_nodes.length;i++){ //设置顶级节点 单选框禁用
if(_nodes[i].isParent){ //判断是否是父节点
//alert(_nodes[i].name);
_nodes[i].nocheck=true; //设置 禁用复选框
zTreeObj.updateNode(_nodes[i]);
}
//在这里判断 是否被选中,选中则回显
//这里开发兼容ie8 所以使用$.inArray ,也可以用indexOf
if($.inArray(_nodes[i].id, $("#dw").val()) != -1){
//alert(_nodes[i].id);
_nodes[i].checked = true; //设置 回显复选框
zTreeObj.updateNode(_nodes[i]); //更新节点
}
}
}