异步加载节点
1 var zTreeObj;
2 var setting = {
3 check: {
4 enable: true,
5 chkStyle:"checkbox"
6 },
7 async: {
8 enable: true,
9 url:"ShowTree",
10 autoParam:["id", "name=n"],
11 otherParam:{"otherParam":"zTreeAsyncTest"},
12 dataFilter: filter
13 }
14 };
15
16 function filter(treeId, parentNode, childNodes) {
17 if (!childNodes) return null;
18 for (var i=0, l=childNodes.length; i<l; i++) {
19 childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
20 }
21 return childNodes;
22 }
23 function setContentValue(){
24 var nodes = zTreeObj.getCheckedNodes();
25 var s = '';//选中节点ids
26 //遍历选中的节点,为s赋值
27 for(var i=0; i<nodes.length; i++){
28 var isParent = nodes[i].isParent;
29
30 if (s != '')s += ',';
31 s += nodes[i].id;
32
33 }
34 $("#content").val(s);
35 }
36
37 $(document).ready(function(){
38 zTreeObj = $.fn.zTree.init($("#treeDemo"), setting);
39 });
上面的代码作用就是当你点击某一父节点是他会从后台获取其子节点并加载到树里,这就是异步加载树节点的代码,同步加载数据看懂了,这个异步加载树节点自然就通了,我就不再多废话了。
下面是异步分批获取节点用到的java Servlet的dopost方法看代码
1 public void doPost(HttpServletRequest request, HttpServletResponse response)
2 throws ServletException, IOException {
3 String pId = "0";
4 String pName = "";
5 if(null!=request.getParameter("id"))
6 pId = request.getParameter("id");
7 if(null!=request.getParameter("n"))
8 pName =request.getParameter("n");
9 if (pId==null || pId=="") pId = "0";
10 if (pName==null) pName = "";
11 StringBuffer ss = new StringBuffer("[");
12 for (int i=1; i<5; i++) {
13 String nId = pId+i;
14 String nName = pName+"n"+i;
15 ss.append("{ id:'"+nId+"', name:'"+nName+"', isParent:true}");
16 if (i<4) {
17 ss.append(",");
18 }
19 }
20 ss.append("]");
21 response.getWriter().write(ss.toString());
22 }