当前位置: 首页 > article >正文

浅谈LigerUi Tree(树)

新到公司后,使用ligerui做了一个小练习,期间也遇到了一些问题,现在总结出来,以后方便查阅:
一.ligerui—tree(树)
ligerui可以非常简单的显示树,具体如下:
要使用ligerui框架,在官网上下载最新的jar包框架,解压之后,将Source –> lib整个文件夹引入到项目WebContent目录下
这里写图片描述

1) 在jsp页面中引入ligerui所需要的jar包(要根据要实现的不同的功能引入不同的jar包,如tree引入LigerTree的jar包,grid引入LigerGrid的jar包。。)


2) js代码:(ligertree有两种数据绑定的类型,(1):基于data, (2)基于url。 )

 $("#tree1").ligerTree(  {    data:data    });

或者: $(“#tree1”).ligerTree({ url: ‘tree.json’, ajaxType: ‘get’ });

3) tree中引用的data格式 或者后台返回的数据json的格式:
查看官方文档,必须是如下的格式:
这里写图片描述

也就是说,后台处理的数据返回之后要对数据进行拼凑,最后拼凑成这样的json格式返回前台。
按照以上的步骤,就可以显示完整的树了。
最终显示效果如下:
这里写图片描述

以下是我做的具体的小例子,(使用的是servlet+jsp,数据库设计,我是将父文件夹的id作为子文件夹的pid,具体见最下面的图),最后的结果是显示文件夹之间的层级:
// js代码:

    //显示树$("#treeDatas").ligerTree({url : 'getAllDirs?' + $.param({typeid : '1',parentid : '0'}),checkbox : false,slide : false,isleaf : false,//  onBeforeExpand : onBeforeExpand,onSelect :onSelect ,onClick : function(node) {if (node != null && node.data != null) {nodeid = node.data.id;//alert(nodeid);if (nodeid != -1 && node.data.typeid == -1) {gridManager.setOptions({parms : [ {name : 'organid',value : nodeid} ]});gridManager.loadData(true);}}}});

servlet:(查询数据库,将结果返回给前台,调用NodeUtil工具类中的treeDirList方法,将查到的list转换成前台data需要的数据格式返回前台)
private void findAllDir(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
req.setCharacterEncoding(“utf-8”);
resp.setContentType(“text/html;charset=UTF-8”);
PrintWriter printWriter = resp.getWriter();
List

list = new UploadFileDaoImpl().findAllDirs();
String s = req.getParameter(“typeid”);
String s1 = req.getParameter(“parentid”);
int xx = Integer.parseInt(s1);
//System.out.println(s);
//System.out.println(s1);

    JSONObject json = new JSONObject();String treeJson = "";int pid;NodeUtil nodeUtil = new NodeUtil();JSONArray jsonArray = new JSONArray();String jsonArray2 = null;for(int i=0;i<list.size();i++){jsonArray.add(list.get(i));}jsonArray2 = nodeUtil.treeDirList(jsonArray, xx).toString();String string = jsonArray2.replaceAll("dirName", "text");if (list != null && list.size() > 0) {for (Dir dir : list) {json.put("id", dir.getId());json.put("text", dir.getDirName());json.put("pid", dir.getPid());json.put("children", "[]");treeJson += json.toString() + ",";}}String string2 = "[{\"text\":\"upload\",\"id\":0,\"pid\":0,\"children\":"+string+"}]";printWriter.print(string2);printWriter.flush();printWriter.close();
}

工具类NodeUtil,用于通过递归算法,转换成前台需要的data格式,
public JSONArray treeDirList(JSONArray DirList, int parentId) {
JSONArray childDir = new JSONArray();
for (Object object : DirList) {
JSONObject jsonDir = JSONObject.fromObject(object);
int DirId = jsonDir.getInt(“id”);
int pid = jsonDir.getInt(“pid”);
if (parentId == pid) {
JSONArray c_node = treeDirList(DirList, DirId);
jsonDir.put(“children”, c_node);
childDir.add(jsonDir);
}
}
return childDir;
}
最后的运行效果:
这里写图片描述
数据库:
这里写图片描述

http://www.lryc.cn/news/2417388.html

相关文章:

  • 期末大作业 个人口令管理系统(密码学)
  • 双归上行--主备
  • Halcon 3D 常见算子描述
  • 万能DOS启动盘制作全攻略!(软盘+光盘+U盘+硬盘+NTFS+应急实用工具)
  • Java语言中关键字strictfp的用途
  • 文件安全之只允许网站内打开,禁止单独打开下载
  • Kafka架构详解及安装部署
  • applet java_Java applet 类
  • 用 Python 图像识别打造一个小狗分类器
  • JAVA学习笔记24——Dubbo、zookeeper相关讲解及实战入门
  • 使用国际化资源文件ResourceBundle和反射手段,实现将配置文件properties信息映射到Java对象中
  • android开发入门
  • Recordset对象方法详解
  • 探索R Markdown Book:一个强大的文档创作与分享平台
  • HTML常用语法总结【精华】
  • 基于Spring Boot的网吧管理系统-计算机毕业设计源码03067
  • 推荐文章:bt2qbt —— 简化你的种子迁移之旅
  • tsql_TSQL的历史
  • Linux mlabel命令教程:如何给磁盘添加卷标(附案例详解和注意事项)
  • ABAP基础知识 复杂程序的性能优化
  • 1.23聚类算法(kmeans(初始随机选k,迭代收敛),DBSCAN(dij选点),MEANSHIFT(质心收敛),AGENS(最小生成树)),蚁群算法(参数理解、过程理解、伪代码、代码)
  • 【设计模式】备忘录模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  • linux内核register_chrdev_region()系列函数
  • eclipse中如何使用svn
  • 结构体sockaddr、sockaddr_in、sockaddr_in6之间的区别和联系
  • I3D模型_2017_CVPR
  • Framework3.5 最终文件下载及离线安装
  • OpenGL 入门(一)— 创建窗口
  • Matlab roundn()函数使用样例
  • iOS - 融云RTC功能梳理