热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jeecg中的<t:datagridtreegrid="true">实现

eecg的代码生成器很不错,但是可能有的时候不是那么符合我们实际项目的功能需求,这里会首先介绍jeecg原生生成的样子,以及根据需求进行的改造。Jeecg中的

eecg的代码生成器很不错,但是可能有的时候不是那么符合我们实际项目的功能需求,这里会首先介绍jeecg原生生成的样子,以及根据需求进行的改造。Jeecg中的就是将easyui进行封装而成。jsp页面引入:<%@include file="/context/mytags.jsp"%>,在mytags.jsp中<%@ taglib prefix="t" uri="/easyui-tags"%>的这条即为jeecg对easyui的封装。扯得有点远了,回到主题上来。Jeecg中的treegrid的树形结构的实现:

部分需求构造:树形结构图中的是区域划分。区域存于一张表,通过parientid判断其父节点。

需求症状:根据登陆用户所在区域,选择监测区域时为其显示该区域下的子级区域供其选择。并且默认选中原先保存的区域。选中子级区域时不得默认为其选中父级区域。

需求诊断:treegrid为懒加载形式,先加载的是最外层的区域,当点击某区域要为其展开下级时,又会去controller加载出其子级。

需求药方:

  1:jsp页面中的中的treegrid设置为true。形式为:

 

  2:在RegimeController类里添加方法:departFunction并为其添加注解。函数如下:

   


 @RequestMapping(params = "departFunction")
    @ResponseBody
    public List departFunction(TSDepart tSDepart,HttpServletRequest request, HttpServletResponse response, TreeGrid treegrid) {
      String departid = request.getParameter("monitorId");//获取页面参数 即用户区域id
      StringBuffer sqlList = new StringBuffer();
      sqlList.append("SELECT * FROM T_S_DEPART WHERE DELFLAG =0 ");//利用的是原生的depart表,文末我会给出depart类和表形式
      if (treegrid.getId() != null) {
        sqlList.append(" AND parentdepartid = '"+treegrid.getId()+"'");//点击下级时加载下级列表
      } else {
        sqlList.append(" AND id = '"+departid+"'");//查找当前登录用户对应的区域
      }
      List parList = Db.use("gl").find(sqlList.toString()); //jFinal 数据库走起
      List parDepart = new ArrayList();
      for (int i = 0; i         TSDepart tagDepart = new TSDepart();
        tagDepart.setId(parList.get(i).getStr("id"));
        tagDepart.setDepartname(parList.get(i).getStr("departname"));
        tagDepart.setDescription(parList.get(i).getStr("description"));
        List sOnDepartList= new ArrayList();
        //有下级则继续 否则为null
        String sql = "SELECT * FROM T_S_DEPART WHERE DELFLAG =0 AND PARENTDEPARTID='"+parList.get(i).getStr("id")+"'";
        List sOnList= Db.use("gl").find(sql);
        //这里的目的是没有下级了则需要显示为文件的形式,而不是文件夹的形式。不理解的话,注释了再看效果你就明白了
        if(sonList.size()>0){
          tagDepart.setTSDeparts(sonDepartList);
        }else{
          tagDepart.setTSDeparts(null);
        }
        TSDepart sOnDepart= new TSDepart();
        sonDepartList.add(sonDepart);
        parDepart.add(tagDepart);
      }
      //树形列表模型设置类 页面上要对应起来显示的
      List treeGrids = new ArrayList();
      TreeGridModel treeGridModel = new TreeGridModel();
      treeGridModel.setTextField("departname");
      treeGridModel.setParentText("TSPDepart_departname");
      treeGridModel.setParentId("TSPDepart_id");
      treeGridModel.setSrc("description");
      treeGridModel.setIdField("id");
      treeGridModel.setChildList("TSDeparts");
      treeGrids = systemService.treegrid(parDepart, treeGridModel);
      return treeGrids;
    }

 

    3:回到原来那个jsp页面上


<%@ page language="java" cOntentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>















 

  看到这里也许就要问了:为何有这五行代码

    $('#addList').treegrid('collapseAll');//合并树形
    $('#addList').treegrid('expandAll');//展开树形
    $('#addList').treegrid('select',monitorId);//选中第一行
    $("#addList").treegrid("unselectAll");//取消选择
    var result=departId.replace(/\s+/g,"");//去空格

  问题很多,要不就是前边的序列号全是0,要不就是多行被默认选中时,只能选几条,要不就是无法选中等等问题,其实解决的思路就是模拟人实际操作的时候要点击才会加载,去空格这是个好习惯,未加这行前,就是不能选中,只能选中一条,简直就是莫名其妙的bug啊,想了好几天,边维护其他项目,边想这个,最后在alrt的时候,看着那id发呆,然后发现是页面直接写的值就行,传过来就不行,思前想后啊,才发现是空格的原因啊。哎,还是太年轻啊。、

最后跟上代码,利用的是张大大的类来模拟了一下的功能。写的不是很好呀,小菜一枚望见谅。


1 package org.jeecgframework.web.system.pojo.base;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.persistence.CascadeType;
7 import javax.persistence.Column;
8 import javax.persistence.Entity;
9 import javax.persistence.FetchType;
10 import javax.persistence.JoinColumn;
11 import javax.persistence.ManyToOne;
12 import javax.persistence.OneToMany;
13 import javax.persistence.Table;
14
15 import org.jeecgframework.core.common.entity.IdEntity;
16
17 /**
18 * 部门机构表
19 * @author 张代浩
20 */
21 @Entity
22 @Table(name = "t_s_depart")
23 public class TSDepart extends IdEntity implements java.io.Serializable {
24 private TSDepart TSPDepart;//上级部门
25 private String departname;//部门名称
26 private String description;//部门描述
27 private String longitude;//经度
28 private String latitude;//纬度
29 private String address;//地址
30 private String code;
31 private Integer dtype;
32 private Integer delflag;
33 private Integer xh;
34 private List TSDeparts = new ArrayList();//下属部门
35
36 @ManyToOne(fetch = FetchType.LAZY)
37 @JoinColumn(name = "parentdepartid")
38 public TSDepart getTSPDepart() {
39 return this.TSPDepart;
40 }
41
42 public void setTSPDepart(TSDepart TSPDepart) {
43 this.TSPDepart = TSPDepart;
44 }
45
46 @Column(name = "address", nullable = false, length = 100)
47 public String getAddress() {
48 return this.address;
49 }
50
51 public void setAddress(String address) {
52 this.address = address;
53 }
54
55 @Column(name = "longitude", nullable = false, length = 50)
56 public String getLongitude() {
57 return this.longitude;
58 }
59
60 public void setLongitude(String longitude) {
61 this.lOngitude= longitude;
62 }
63
64 @Column(name = "latitude", nullable = false, length = 50)
65 public String getLatitude() {
66 return this.latitude;
67 }
68
69 public void setLatitude(String latitude) {
70 this.latitude = latitude;
71 }
72
73 @Column(name = "departname", nullable = false, length = 100)
74 public String getDepartname() {
75 return this.departname;
76 }
77
78 public void setDepartname(String departname) {
79 this.departname = departname;
80 }
81
82 @Column(name = "description", length = 500)
83 public String getDescription() {
84 return this.description;
85 }
86
87 public void setDescription(String description) {
88 this.description = description;
89 }
90
91 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "TSPDepart")
92 public List getTSDeparts() {
93 return TSDeparts;
94 }
95
96 public void setTSDeparts(List tSDeparts) {
97 TSDeparts = tSDeparts;
98 }
99
100 public String getCode() {
101 return code;
102 }
103
104 public void setCode(String code) {
105 this.code = code;
106 }
107
108 public Integer getDtype() {
109 return dtype;
110 }
111
112 public void setDtype(Integer dtype) {
113 this.dtype = dtype;
114 }
115
116 public Integer getDelflag() {
117 return delflag;
118 }
119
120 public void setDelflag(Integer delflag) {
121 this.delflag = delflag;
122 }
123 @Column(name = "xh", nullable = false, length = 50)
124 public Integer getXh() {
125 return xh;
126 }
127
128 public void setXh(Integer xh) {
129 this.xh = xh;
130 }
131
132
133
134 }

 转载请注明出处:http://www.cnblogs.com/aryun/p/6496631.html 



推荐阅读
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ... [详细]
  • 本文将详细探讨Linux pinctrl子系统的各个关键数据结构,帮助读者深入了解其内部机制。通过分析这些数据结构及其相互关系,我们将进一步理解pinctrl子系统的工作原理和设计思路。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
author-avatar
野蛮生长
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有