使用ztree.js,受益一生,十分钟学会使用tree树形结构插件
看到ztree.js,这几个字眼,毋庸置疑,那肯定就是tree树形结构了,曾经的swing年代有jtree,后来jquery年代有jstree和treeview,虽然我没写过,但是我见过,一些小功能做起来比较繁琐,几个功能做了一个月,当然了有能力的关系,也有插件易用度的关系
最近要实现的功能用tree树形结构来做是最好的,就是资源的分配,来简单讲讲ztree吧,这是目前国内很火的一个插件,百度一下就能了解,使用起来十分简单
小编我用过3年的jqgrid,在此还是要再次感谢当年的王组让我去跟jqgrid深入浅出,多用了jqgrid后,再看ztree,那就十分简单了,不知道ztree作者是否也参考过jqgrid
首先你需要引入js以及css吧
- <!-- ztree -->
- <link href="<%=request.getContextPath()%>/css/ztree/zTreeStyle/zTreeStyle.css" rel="stylesheet">
- <script src="<%=request.getContextPath()%>/js/ztree/jquery.ztree.core.js"></script>
然后你需要定义一个id="treePermission",这点和jqgrid一样
- <!-- ztree start -->
- <div class="zTreeDemoBackground left">
- <ul id="treePermission" class="ztree"></ul>
- </div>
定义一下数据结构和基本配置
- var setting = {
- async: {
- enable: true,
- url: getAsyncUrl,
- autoParam: ["id"]
- },
- data: {
- simpleData: {
- enable: true,
- idKey: "id",
- pIdKey: "pId",
- rootPId: 0
- }
- }
- };
- // 查询子节点
- function getAsyncUrl(treeId, treeNode) {
- return "<%=request.getContextPath()%>/auth/permission/getTreeSubNode";
- }
- var zNodes =[
- { id:1, pId:0, name:"父节点1 - 展开", open:true},
- { id:11, pId:1, name:"父节点11 - 折叠"},
- { id:111, pId:11, name:"叶子节点111"},
- { id:112, pId:11, name:"叶子节点112"},
- { id:113, pId:11, name:"叶子节点113"},
- { id:114, pId:11, name:"叶子节点114"},
- { id:12, pId:1, name:"父节点12 - 折叠"},
- { id:121, pId:12, name:"叶子节点121"},
- { id:122, pId:12, name:"叶子节点122"},
- { id:123, pId:12, name:"叶子节点123"},
- { id:124, pId:12, name:"叶子节点124"},
- { id:13, pId:1, name:"父节点13 - 没有子节点", isParent:true},
- { id:2, pId:0, name:"父节点2 - 折叠"},
- { id:21, pId:2, name:"父节点21 - 展开", open:true},
- { id:211, pId:21, name:"叶子节点211"},
- { id:212, pId:21, name:"叶子节点212"},
- { id:213, pId:21, name:"叶子节点213"},
- { id:214, pId:21, name:"叶子节点214"},
- { id:22, pId:2, name:"父节点22 - 折叠"},
- { id:221, pId:22, name:"叶子节点221"},
- { id:222, pId:22, name:"叶子节点222"},
- { id:223, pId:22, name:"叶子节点223"},
- { id:224, pId:22, name:"叶子节点224"},
- { id:23, pId:2, name:"父节点23 - 折叠"},
- { id:231, pId:23, name:"叶子节点231"},
- { id:232, pId:23, name:"叶子节点232"},
- { id:233, pId:23, name:"叶子节点233"},
- { id:234, pId:23, name:"叶子节点234"},
- { id:3, pId:0, name:"父节点3 - 没有子节点", isParent:true}
- ];
- $(document).ready(function(){
- $.post("<%=request.getContextPath()%>/auth/permission/getTreeRootNode",{},function(jsonResult){
- $.fn.zTree.init($("#treePermission"), setting, jsonResult.data);
- });
- });
zNodes是初始化的静态数据,可以不用,这里为了方便贴了出来,初始化的时候放入$.fn.zTree.init($("#treePermission"), setting, zNodes);即可
znodes我没有使用,在初始化的时候会预先加载根目录,然后点击再次加载子目录
- @Override
- public List<TreeNode> queryNode(Integer parentId) {
- SysPermissionExample example = new SysPermissionExample();
- Criteria criteria = example.createCriteria();
- criteria.andParentidEqualTo(parentId);
- List<SysPermission> permissions = sysPermissionMapper.selectByExample(example);
- // 如果为空,说明没有根权限,需要创建一个
- if (permissions.isEmpty()) {
- return null;
- }
- // 获得根权限返回出去
- List<TreeNode> rootNodeList = new ArrayList<TreeNode>();
- for (SysPermission p : permissions) {
- TreeNode rootNode = new TreeNode(p.getId(), p.getParentid(), p.getName(),
- p.getType() == ShiroPermissionTypeEnum.MENU.value ? true : false,
- p.getType() == ShiroPermissionTypeEnum.MENU.value ? true : false);
- rootNodeList.add(rootNode);
- }
- return rootNodeList;
- }
- @RequestMapping(value="/permission/getTreeSubNode")
- @ResponseBody
- public List<TreeNode> getTreeSubNode(TreeNode node) throws Exception{
- List<TreeNode> rootNodeList = systemAuthService.queryNode(node.getId());
- return rootNodeList;
- }
好了,调用后就直接可以使用了,非常简单,还有一些简单配置请参考官网吧~
使用ztree.js,受益一生,十分钟学会使用tree树形结构插件的更多相关文章
- PHP学习过程_Symfony_(3)_整理_十分钟学会Symfony
这篇文章主要介绍了Symfony学习十分钟入门教程,详细介绍了Symfony的安装配置,项目初始化,建立Bundle,设计实体,添加约束,增删改查等基本操作技巧,需要的朋友可以参考下 (此文章已被多人 ...
- 十分钟学会 tmux
tmux 是一款终端复用命令行工具,一般用于 Terminal 的窗口管理.在 macOS 下,使用 iTerm2 能应付绝大多数窗口管理的需求. 如上图所示,iTerm2 能新建多个标签页(快捷键 ...
- 快速入门:十分钟学会Python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- Python十分钟学会
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 快速入门:十分钟学会Python(转)
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 高速入门:十分钟学会Python
初试牛刀 如果你希望学习Python这门语言.却苦于找不到一个简短而全面的新手教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手冊(Cheat ...
- 十分钟学会canvas
一句话描述:canvas是HTML5加入的用来绘制2D图像与文字的元素. 基础 简单步骤: var c = document.getElementById("mycanvas"); ...
- 十分钟学会Markdown基本语法
文章目录 Markdown 语法 一.标题 这是一级标题 这是二级标题 这是三级标题 这是四级标题 这是五级标题 这是六级标题 二.字体 三.引用 四.分割线 五.图片 六.超链接 七.列表 八.表格 ...
- 零基础十分钟学会用git在coding.net上传(pull)和push
---恢复内容开始--- 对于入门者来说,特别是刚刚接触计算机的人来说,模仿是最快的学习方式了,先能够会使用(对于初学者来说,这种使用新事物的感觉很能爽的)至于原理,以后再说.下面先让初学者快速的学会 ...
随机推荐
- mysql在Windows下使用mysqldump命令备份数据库
在cmd窗口中使用mysqldump命令首先需要配置环境变量 1,在计算机中找到MySQL的安装位置,找到MySQL Workbench,比如我的是C:\Program Files\MySQL\MyS ...
- 【position也可以很复杂】当弹出层遇上了鼠标定位(下)
前言 接着昨天的内容写,为了保证内容连续性,这里还是把昨天的内容拷了过来. 请用现代浏览器测试 引出问题 有图有真相,我们来看一个智联招聘里面经常出现的图层: 他这个是没有什么问题的,我们来简单看看其 ...
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录
电脑是win8 64位,安装oracle 11g r2 64位的,谁知道一切装完毕后,打开项目却连不上oracle数据了...首先是pl/sql连不上,装了oracle服务器,应该是不用再装客户端,p ...
- 【移动适配】一个像素的border怎么实现
一个像素里复杂纷扰的世界 文 | 啃先生 Mar.3rd.2016 首发于微信公众号(啃先生) 上一篇发了<[移动适配]移动Web怎么做屏幕适配> 壹 | Fisrt 在CSS的世界里P ...
- 基于Eclipse搭建STM32开源开发环境
最近项目不忙,想着没事看看简单的嵌入式,弄弄物联网什么的.于是就从廉价的STM32开刀了.因为一直是做PC软件开发的,那VS的智能感知那叫一个爽啊,相比之下,觉得这个Keil简直就像文本编辑器一样lo ...
- 【Leafletjs】5.L.Control 自定义一个Control
L.Control 所有leaflet控制的基础类.继承自IControl接口. 你可以这样添加控件: control.addTo(map); // the same as map.addContro ...
- word第一讲(0723)
工作区导航 F6键:从程序窗口中的一个任务窗格移动到另一个任务窗格.(在菜单栏.工作区.状态栏切换) alt键选中选项卡.左右键切换选项卡.下光标切换到选项卡里具体内容. 设置版面 页面布局-> ...
- Android消息机制源码分析
本篇主要介绍Android中的消息机制,即Looper.Handler是如何协同工作的: Looper:主要用来管理当前线程的消息队列,每个线程只能有一个Looper Handler:用来将消息(Me ...
- 关于<appSettings file="app.config" >引用外部文件的配置值
web.config文件中,appSetting节点引用了外部的配置文件, <appSettings file="app.config"> </appSettin ...
- Sqlite学习笔记(一)&&编译安装
Sqlite简介 sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中. sqlite动态库非常小,最新的3.8.11版本也只有 ...