js代码:
var curMenu = null, zTree_Menu = null; var setting = { async:{ autoParam:["menuid"],//异步加载时自动提交父节点参数 contentType:"application/json",//提交参数的数据类型 enable:true,//是否开启异步加载模式 type:"post",//提交方式 url:"LoadServlet",//服务端加载类 }, view: { showLine: true, selectedMulti: false, dblClickExpand: false }, data: { simpleData: { enable: true, idKey:"menuid", pIdKey:"parentid" } }, callback:{ asyncSuccess: zTreeOnAsyncSuccess,//异步加载成功的fun asyncError: zTreeOnAsyncError, //加载错误的fun beforeClick:beforeClick //捕获单击节点之前的事件回调函数 } }; function zTreeOnAsyncError(event, treeId, treeNode){ alert("异步加载失败!"); } function zTreeOnAsyncSuccess(event, treeId, treeNode, msg){ } function beforeClick(treeId, node) { if (node.isParent) { if (node.level === 0) { var pNode = curMenu; while (pNode && pNode.level !==0) { pNode = pNode.getParentNode(); alert(pNode); } if (pNode !== node) { var a = $("#" + pNode.tId + "_a"); a.removeClass("cur"); zTree_Menu.expandNode(pNode, false); } a = $("#" + node.tId + "_a"); a.addClass("cur"); var isOpen = false; for (var i=0,l=node.children.length; i<l; i++) { if(node.children[i].open) { isOpen = true; break; } } if (isOpen) { zTree_Menu.expandNode(node, true); curMenu = node; } else { zTree_Menu.expandNode(node.children[0].isParent?node.children[0]:node, true); curMenu = node.children[0]; } } else { zTree_Menu.expandNode(node); } } return !node.isParent; } $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting); zTree_Menu = $.fn.zTree.getZTreeObj("treeDemo"); });
后台代码(LoadMenuDaoImpl):
conn=BaseDao.getConn(); String sql="select * from tbl_menu where parentid=?"; ps=conn.prepareStatement(sql); ps.setString(1, menuid); rs=ps.executeQuery(); menu.append("["); while(rs.next()){ menu.append("{menuid:'"+rs.getString("menuid")+"',parentid:'"+rs.getString("parentid")+"',name:'"+rs.getString("menuname")+"',isParent:true},"); } menu.append("]");
LoadMenuServlet代码:
response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); String menuid=request.getParameter("menuid"); System.out.println(menuid); if(menuid==null||menuid.equals("")){ menuid="0"; } LoadMenuDao lmd=new LoadMenuDaoImpl(); String menus=lmd.loadMenu(menuid); out.print(menus); out.flush(); out.close();
显示结果:
目前的问题是,菜单的根目录已经加载上来,但是,当我点击父节点的时候,如:数据展示篇,它并没有再次向后台读取数据!没有实现异步!
求解决!
相关推荐
最近项目中有一个比较大型的树节点加载,网上面也看过一些解决方案,感觉都不是很好,也有很多误区,比如单击节点时加载子...ztree fileter方法是在每次展开时都会执行,所以根据不同的请求达到异步加载子节点的需求。
ztree实现异步加载,使用java语言
ztree异步加载demo,ztree异步加载demo.ztree异步加载demo
jquery ztree 异步加载 延迟加载效果
该资源原理说明与博客《异步&同步加载树节点----zTree(一)》相一致。
用springMVC和mysql,实现了一个简单的zTree异步加载例子,希望可以帮到更多的人。。。
前段时间由于项目需要,看了一下ztree,真的很好用,这个项目需要加载几万条的节点数据,如果用一次性加载的方式性能大大的降低了,借助ztree3.1插件写了个异步加载的树。感谢ztree!
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。下面通过本文给大家分享jQuery zTree 异步加载添加子节点重复问题,需要的朋友参考下吧
关于javaWeb(S2SH)中使用zTree异步加载树节点问题
ztree 异步加载 拖拽 右键菜单 功能
ztree的异步加载实现jfinal,希望可以帮到你
一个Ztree异步分批加载demo,只有前台代码,后台只需要提供分页查询,然后页码自动增长即可。
jquery ztree 异步动态加载部署直接运行,大数据量,异步是很好的处理方式
本人最近在做区域切换,由于是全国地区的,数据高达60多万条,所有采用异步加载的方式。这是一个ztree异步加载全国地区的代码。controlller是后台,tree.jsp是页面。
原来整理的zTree异步加载的应用例子,很多朋友需要,就放到这里了。
主要为大家详细介绍了jquery zTree异步加载、模糊搜索简单实例,感兴趣的小伙伴们可以参考一下
ztree+dwr实现的异步加载树形菜单
主要介绍了zTree异步加载展开第一级节点的实现方法,需要的朋友可以参考下