在对ztree进行操作时,会遇到这个问题:
B下面的选择和A的不一样。当点击B时,下面的树形数据要改为B的选择。
这时需要刷新树形结构,改为B的树形数据
这里笼统记录一下方便以后回忆
var list=[];//A下树型选择的数据或B下树型选择的数据,共用一个
//方案A的checkbox和B所在标签name都为asstType,即<input name='asstType'/>
var asst_typ=$("input[name='asstType']:checked").val();
if(asst_typ=='02'){
for(var a=0;a<assetCurrentB.length;a++){
list.push(assetCurrentB[as].asstCd);
}
}else{
for(var a=0;a<assetCurrentA.length;a++){
list.push(assetCurrentA[as].asstCd);
}
}
......
var nodes=zTreeObj.transformToArray(zTREEObj.getNodes);
for(var i=0;i<nodes.length:i++){
var node=nodes[i];
if(list.length!=0){
for(var r=0;r<list.length;r++){
if(node.asstCd==list[r]){
//这里是选中树形结构节点
zTreeObj.checkNode(node,true,true);
//这里是选中后刷新树形结构,这里必须刷新,要不然会出现:明明修改为true,但是checkbox并未选中,
//当鼠标飘过此checkbox才会选中。
zTreeObj.updateNode(node,true);
}
}
}
}
//另外补充
//获取当前子节点的父节点,父节点里有个属性 check_Child_State=1
//说明这个父节点有一个子节点处于选中状态,
//如果heck_Child_State=3,说明这个父节点有三个子节点处于选中状态,可根据这个属性来修改父节点是否为选中,
var parenNode=node.getParentNode();
//判断父节点的子类有没有选中状态
if(parenNode.heck_Child_State==0){
//修改父节点选中状态
parenNode.checked=false;
zTreeObj.updateNode(parenNode);
}