版权声明:本文为sunziren原创文章,博客园首发,转载务必注明出处以及作者名称。


  Easyui-Tree和Combotree所使用的数据结构是类似的,在我的上一篇文章《Easyui-Treegrid使用注意事项-sunziren》中,提到了两种数据格式。第一种数据间是平级的,第二种是包含关系,子数据被包在父数据的children属性中。

  Tree和Combotree使用的就是第二种数据格式。本文着重记录一下如何生成第二种数据格式。

  1. 首先需要定义一个工具类:TreeBeen。这个类相当于一条完整的数据。包括了属性:id、text、attributes、children、state这五个属性。其中attributes属性用来存储该条数据的其他属性;children为当前数据的子数据,格式为List<TreeBean>;state表示当前节点默认是否展开,你可以给个默认值“open”。

  TreeBeen的源代码如下,很简单,值得注意的是,他的children属性List的泛型正好是TreeBeen类型。

package com.basefrm.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set; public class TreeBean {
private String id;
private String text;
private Map<String,String> attributes = new HashMap<String,String>();
private List<TreeBean> children = new ArrayList<TreeBean>();
private String state = "open";
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Map<String, String> getAttributes() {
return attributes;
}
public void setAttributes(Map<String, String> attributes) {
this.attributes = attributes;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public TreeBean(String id, String text,
Map<String, String> attributes, String state) {
super();
this.id = id;
this.text = text;
this.attributes = attributes;
this.state = state;
}
public TreeBean() {
super();
}
public List<TreeBean> getChildren() {
return children;
}
public void setChildren(List<TreeBean> children) {
this.children = children;
}
}

  2. 我们知道,前台需要的是Json格式的字符串,我们首先需要把包含层级关系的数据从数据库查出来,3个字段是必须的。id,pid,text。其他字段查出来可以放到TreeBeen的attributes属性中。而且我们注意到,要拼这个json格式的字符串,我们肯定是需要循环的,但是我们不知道整个数据一共包括几个层级,因此我们不知道具体设置几个嵌套循环,因此这个我们需要一个递归的方法。先放代码吧,然后我在解释一下。

    //构建树的方法(递归)
private List<TreeBean> buildTree(List<Map> all_Bm,String sjbmbm,String pid,String id,String text){
List<TreeBean> list = new ArrayList<TreeBean>();
for(int i=0;i<all_Bm.size();i++){
if(all_Bm.get(i).get(pid).equals(sjbmbm)){
TreeBean tb = new TreeBean();
tb.setId(all_Bm.get(i).get(id).toString());
tb.setText(all_Bm.get(i).get(text).toString());
tb.setChildren(buildTree(all_Bm,tb.getId(),pid,id,text));
list.add(tb);
}
}
return list;
} //获取部门Json
public void getSzbm(){
String sql = "select bmbm,sjbmbm,bmmc from table_bm";
List<Map> all_Bm = (List)baseDao.loadBySql(sql, null);
List<TreeBean> list=buildTree(all_Bm,"-1","SJBMBM","BMBM","BMMC");
this.printToJson(JSON.toJSONString(list));
}

  方法buildTree是一个递归方法,他在内部调用了自己。参数List<Map> all_Bm为数据库查出来的所有数据,String sjbmbm为你要展示的树的根目录的那条数据的pid。后面三个参数分别为id,pid,text,在查出来的数据中的名称。它返回的是一个List<TreeBean>集合。因为我没有查别的参数,因此就没有给attributes属性设置值。

  通过这个办法,我成功了实现了tree和combotree。当然,这个方法还有个一优化的地方,如果你有什么不明白的地方或者建议,请在评论区回复我,我会及时回复你的。

Easyui-Tree和Combotree使用注意事项-sunziren的更多相关文章

  1. EasyUI –tree、combotree学习总结

    EasyUI –tree.combotree学习总结 一.   tree总结 (一).tree基本使用 tree控件是web页面中将数据分层一树形结构显示的. 使用$.fn.tree.defaults ...

  2. 如何让EasyUI的Tree或者ComboTree节点不显示图标?

    版本:jQuery EasyUI 1.3.2 通过测试,只需把节点的state属性设置为null即可使EasyUI的Tree或者ComboTree控件的节点不显示图标.

  3. Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径

    Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...

  4. Easyui Tree方法扩展 - getLevel(获取节点级别)

    Easyui Tree一直就没有提供这个方法,以前没有用到,所以一直没怎么在意,这次自己用到了,顺便扩展了一个方法,分享给大家. $.extend($.fn.tree.methods, { getLe ...

  5. 数据网格和树-EasyUI Datagrid 数据网格、EasyUI Propertygrid 属性网格、EasyUI Tree 树、EasyUI Treegrid 树形网格

    EasyUI Datagrid 数据网格 扩展自 $.fn.panel.defaults.通过 $.fn.datagrid.defaults 重写默认的 defaults. 数据网格(datagrid ...

  6. .NET easyUI tree树状结构

    简单的制作后台制作写一个json(string类型)格式 public partial class goodstype_type : System.Web.UI.Page { public strin ...

  7. [转]easyui tree 模仿ztree 使用扁平化加载json

    原文地址:http://my.oschina.net/acitiviti/blog/349377 参考文章:http://www.jeasyuicn.com/demo/treeloadfilter.h ...

  8. 【项目经验】EasyUI Tree

    ITOO5.0开始了,我参加了伟大的基础系统,从整体上来说,基础系统有三个职能: 1.自己的核心职能--选课(公共选修课,专业选修课),课表: 2.为其他系统提供真实数据: 3.维护信息 而近两三天, ...

  9. Jquery EasyUI Tree .net实例

    图片: 针对tree: 数据库: CREATE TABLE [dbo].[SystemModel]( [Id] [,) NOT NULL, [Name] [nvarchar]() NULL, [Fat ...

随机推荐

  1. Codeforces 1178E Archaeology (鸽巢原理)

    题意: 给你1e6的字符串,保证只含'a''b''c'三种字符,且相邻两个字符一定不一样 求一个大于等于n/2的回文子序列 思路: 朴素的最长回文子序列是n方的区间dp,这题显然不行,要充分利用题中所 ...

  2. JAVA全栈工程师学习线路(建议收藏)

    互联网技术,更新迭代迅速,用日新月异来说也不为过,所以,面对这这种大环境,对于码农尤其是那些对于初入职场的新手来说,该如何自我学习升级,往方向发展,这一点是大家都经常困惑的. 大部分人,刚开始学习的J ...

  3. [Effective Java 读书笔记] 第二章 创建和销毁对象 第五条

    第五条 避免创建不必要的对象 书中一开始举例: String s = new String("stringette"); // don't do this //应该使用下面,只会创 ...

  4. 学习CSS之用CSS实现时钟效果

    一.机械时钟 1.最终效果 用 CSS 绘制的机械时钟效果如下: HTML 中代码结构为: <body>     <div class="clock">   ...

  5. 《Web渗透与漏洞挖掘》第一章 安全知识

    漏洞:漏洞是指一个系统存在的弱点或缺陷,系统对特定威胁攻击或危险时间的敏感性,或进行攻击威胁的可能性.漏洞可能来自应用软件或操作系统设计时的缺陷或编码时的错误,也可能来自业务交互处理过程中的设计缺陷或 ...

  6. Java 添加、读取、删除Excel图片

    本文介绍在Java程序中如何添加图片到excel表格,添加图片时可设置图片大小.位置.旋转.超链接.可选文本等,以及如何读取.删除excel表格中已有的图片. 工具:Free Spire.XLS fo ...

  7. linux入门系列14--ssh服务及主机远程管理

    通过前面十余篇文章的介绍,相信已经初步入门Linux本地管理的基本方法了,后续的文章将介绍Linux中常用的服务部署以及如何为外部提供相应的服务. 系列文章第三篇"linux入门系列3--l ...

  8. 【转载】python_logging模块

    原文:https://www.cnblogs.com/liujiacai/p/7804848.html 1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志 ...

  9. JMeter接口测试响应数据中乱码问题解决方法

    乱码产生原因: 结果处理编码与被测对象的编码不一致,JMeter是默认按照ISO-8859-1编码格式进行解析. 解决方法一: 根据接口文档或者找开发确认项目编码是哪种,因为有的项目用的是GBK,有的 ...

  10. DOTNET Core MVC (一)

    以控台的形式,运行.net core mvc 代码, Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => ...