ztree的包,有用的是query.ztree.all-3.5.js,这里的all是表示全部功能,包括增删改查,core只有基础功能
导入的css zTreeStyle.css
这个插件比较简单,要用就直接,直接把官方的html拿来就能用
这里的文件路径就是要找的html
这个Ztree 有两种数据加载模式:标准加载 简单加载
一般用简单加载,简单加载格式{“id”:1,name:2:pid:3}
基本是这样,但是要实现连续添加,本来是根目录,添加变成不是,这样就要加
reAsyncChildNodes
方法
后台的实现,先获得所有数据
Ztree自动加载
如果添加数据,那就用,传参,用reasynchildnodes ,重新用ajax传回去,
用查询父类的方法,不是查询本身id,这样就他就会加载子类,而不是父类,
后台实现 注意这里是if语句
@Override
public List<ZTreeNode> getDeptPAll(String id) {
DeptPQuery query = new DeptPQuery();
if(id !=null){
query.or().andStateEqualTo(1).andParentIdEqualTo(id);
}else{
query.createCriteria().andStateEqualTo(1);
}
List<ZTreeNode> ZTlist = new ArrayList<ZTreeNode>();
List<DeptP> list = deptPDao.selectByExample(query);
for (DeptP deptP : list) {
ZTreeNode zTreeNode = new ZTreeNode();
zTreeNode.setId(deptP.getDeptId());
zTreeNode.setName(deptP.getDeptName());
zTreeNode.setpId(deptP.getParentId());
zTreeNode.setIsParent(deptP.getIsParent()?"true":"false");
ZTlist.add(zTreeNode);
}
return ZTlist;
}
function addHoverDom(treeId, treeNode) { var sObj = $("#" + treeNode.tId + "_span"); if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return; var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='add node' οnfοcus='this.blur();'></span>"; sObj.after(addStr); var btn = $("#addBtn_"+treeNode.tId); if (btn) btn.bind("click", function(){ var zTree = $.fn.zTree.getZTreeObj("treeDemo"); zTree.addNodes(treeNode, {id:(treeNode.id + newCount), pId:treeNode.id, name:"new node" + (newCount++)}); $.post("/deptPCreate.html", {id:(treeNode.id+ newCount), pId:treeNode.id, name:"new node" + (newCount++)},function(res){ zTree.reAsyncChildNodes(treeNode, "refresh"); }) return false; }); };
在ajax成功后回调