关于分类树节点编辑成功后刷新树并展开操作节点

在用户完成编辑操作之后,要求将分类树刷新(当前节点),并将操作节点展开

1,这需要异步刷新树,要在setting中加async这个参数,可使树进行异步操作

例:

async:{
enable:true,//表示异步操作开启
url:ctx+"/collection/category/getTree",//异步操作指向的地址(类似ajax)
autoParam:["cateId", "cateName", "cateHisId"],//回传的值(这里的值是树节点里对应名称的值)

dataFilter: filter//对回传函数的预处理
},

function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
for (var i=0, l=childNodes.length; ichildNodes[i].name = childNodes[i].cateName.replace(/\.n/g, '.');
}
return childNodes;
},

2,然后在需要刷新的时候,比如点击保存之后调用下面的语句

var zTree=$.fn.zTree.getZTreeObj("resTree");//获得数对象
var node=zTree.getSelectedNodes();//获取被选中的节点信息
var pNode=node[0].getParentNode();//获取被选中节点的父节点(由于这里不支持多选,所以直接获取第一个就好)
zTree.reAsyncChildNodes(pNode, "refresh",false);//刷新父节点,会访问异步操作指向的地址


3,但是通过父节点去数据库取值之后返回的list中也包括了父节点,就会出现父节点展开后还是父节点这样的重复信息

所以在后台取list的时候,先将父节点信息排除

for(int i=0;iif(cateHisId.equals(cateHisIds.get(i))){
continue;//如果id为父节点的id则跳过
}
cates.add(categoryMapper.getCategorUseForCopy(cateHisIds.get(i)));
}

这样就可以在点击保存后刷新当前节点并默认展开操作的节点

你可能感兴趣的