Ztree设置权限管理时显示树形菜单
2017-03-29 10:28
1236 查看
在做分配权限模块的时候,遇到了要动态显示树形菜单的情况。查了下都是用Ztree插件做的,但网上好多demo都不能用,今天特意写一篇亲测能用的博客介绍。
建议使用Ztree插件前简单阅读下API文档,链接地址
要显示树形菜单的位置如下,class必须为ztree,不然CSS样式不起作用,无法显示树形菜单
<ul id="systemTree" class="ztree" > </ul>
Ztree的配置参数如下
var setting = { check:{ enable:true }, data: { simpleData:{ enable:true } }, callback:{ onCheck:onCheck// 点击属性菜单复选框回调函数 } }; function onCheck(e,treeId,treeNode){ var treeObj1=$.fn.zTree.getZTreeObj("systemTree"),// 参数为目标ul的id nodes1=treeObj1.getCheckedNodes(true),// 获取选中的节点集合 v1=""; // 将选中的系统菜单加载到右边 var target_table1 = $(".systemTable");//要加载的table的位置 //下面的for循环根据自己需要修改 for(var i=0;i<nodes1.length;i++){ // 一级菜单加粗 if (nodes1[i].getParentNode() == null) { v1+= '<tr><td class="rightTd" id="'+nodes1[i].id+'"><b>'+nodes1[i].name+'</b></td></tr>'; } else { v1+= '<tr><td class="rightTd" id="'+nodes1[i].id+'">'+nodes1[i].name+'</td></tr>'; } } //显示在table中 target_table1.html(v1); }
前台通过ajax调用后台方法查询出菜单集合,需将菜单转换成json字符串形式,如下
bf.append("["); for (JSONObject menu : menuList) { pid = menu.getInteger("pid"); id = menu.getInteger("id"); cname = menu.getString("cname"); // 判断一级菜单 if (pid == 9999) { bf.append("{id:"+id+",pId:"+pid+",name:'"+cname+"',open:false},"); } else { bf.append("{id:"+id+",pId:"+pid+",name:'"+cname+"',open:true},"); } } String menuStr = ""; if (bf.length() > 0) { menuStr = bf.substring(0, bf.length()-1); } menuStr += "]";
字符串bf内为Ztree显示的字符串格式。
假设“个人中心”为父节点,id:100;其子节点“修改密码”pId:100(pId 字段 i 必须大写),插件会自动将修改密码加载到个人中心下的二级菜单中。意思就是子节点的pId必须是父节点的id
open属性,true代表初始化节点数据时,会直接展开此节点。(一般是一级菜单false,二级true)
返回字符串到前台时,需要将字符串转换成json对象后,用$.fn.zTree.init($("#systemTree"), setting, zNodes)调用插件方法即可完成菜单显示,如下
// 系统菜单 var json = eval("("+data.menuStr+")"); var zNodes = json; $.fn.zTree.init($("#systemTree"), setting, zNodes);
下面是Ztree插件需要用到的CSS和js文件
<link rel="stylesheet" href="js/zTree/zTreeStyle/zTreeStyle.css" type="text/css"> <script type="text/javascript" src="js/zTree/js/jquery.ztree.core-3.4.js"></script> <script type="text/javascript" src="js/zTree/js/jquery.ztree.excheck-3.5.js"></script> <script type="text/javascript" src="js/zTree/js/jquery-migrate-1.2.1.js"></script>
这里jquery.ztree.core-3.4.js版本用的3.4;而jquery.ztree.excheck-3.5.js用的是3.5版本。因为我全用3.5的版本会有错误,我也不清楚是什么原因。
jquery-migrate-1.2.1.js文件是我项目Ztree插件和jquery.min.js文件冲突,需要这个文件来解决,可根据个人需要选择引用
js和css文件链接:http://pan.baidu.com/s/1pLfPQ35 密码:5d7g
相关文章推荐
- NET 利用 jquery+ztree 实现 角色权限设置(以树结构显示导航菜单)
- SpringMVC+ZTree实现树形菜单权限配置
- SwipeLayout 如何按照权限要求隐藏菜单项(按菜单显示比例动态设置rightViewWidth)
- Wordpress中设置管理菜单显示非显示的插件:WPlite
- SpringMVC+ZTree实现树形菜单权限配置的方法
- SpringMVC+ZTree实现树形菜单权限配置
- 角色权限管理系统(表结构设计和一级菜单显示)
- 利用django-suit模板在管理后台添加自定义的菜单和自定义的页面、设置访问权限
- SpringMVC+ZTree实现树形菜单权限配置
- 052医疗项目-模块五:权限设置-实现根据用户显示不同的菜单
- 角色权限管理系统(二级菜单的显示、一级菜单管理)
- 一个二级树形菜单,初始显示为全部展开,适用于分类较少的情况。
- 遍历菜单到带checkboxtreeview中设置权限
- 文件系统管理 之 文件和目录访问权限设置
- 用ASP+XML实现CSDN的菜单(数据库),可分权限管理
- DNN 360 Sidemenu某些Vertical Menu不显示管理菜单的解决办法
- ASP.NET角色权限设置---(参考MSDN)了解角色管理
- (DB ,sqlserver2005,tips)如何获取用户自定义的触发器的内容(在sqlserver2005树形菜单没有显示)
- 隐藏文件夹无法通过菜单工具更改设置实现显示,网络被阻塞的解决方案
- C#在MDI父窗体菜单中显示子窗体列表的设置方法