写在前面:

  表格树是在普通ligerGrid的基础上,做了一点改变,使数据以表格树的形式显示出来,适用于有级别的数据比如菜单(有父菜单,父菜单下面有子菜单)。表格树的显示有两种方法,可以根据自己的项目来选择。

方法1:

  前台页面:

funcGrid = $("#funcGrid").ligerGrid({
columns : [
{display: '功能编号', name: 'functionId',hide:'true'} ,
{id:'functionName',display: '功能名', name: 'functionName', width: 200 } ,
{ display: '功能描述', name: 'functionDes', minWidth: 60 },
{display : '功能fId', name : 'fId', type : "text", hide:'true'}
],
url:'${baseURL}/getFunctionBySysId.action?systemId='+systemId,
tree : {
columnId : 'functionName', //以树型显示的字段的id
idField : 'functionId', //id字段
parentIDField : 'fId', //parent id 字段
isExpand : false
},
width : '100%',
height : '100%',
checkbox : true,
usePager : false,
frozenRownumbers : false,
frozenCheckbox : false,
//rowHeight : 23,
alternatingRow : false,
isChecked: f_isChecked,
});

  后台代码:

 public String getFunctionBySysId(){
log.info("==FunctionAction===getFunctionBySysId=======start="); try {
List<Function> functionList = functionService.getAllBySysId(Integer.parseInt(systemId));
List<FunctionVO> functionVOList = new ArrayList<FunctionVO>();
for (int i = 0; i < functionList.size(); i++) {
FunctionVO functionVO= new FunctionVO();
functionVO.setFunctionId(functionList.get(i).getFunctionId());
functionVO.setFunctionName(functionList.get(i).getFunctionName());
functionVO.setFunctionDes(functionList.get(i).getFunctionDes());
//添加fId 使功能表格以树的形式显示
functionVO.setfId(functionList.get(i).getfId()); functionVOList.add(functionVO);
}
Map<String, Object> map = new HashMap<>();
map.put("Rows", functionVOList);
map.put("Total", functionVOList.size());
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
jsonObject = JSONObject.fromObject(map, jsonConfig); log.info("jsonObject:" + jsonObject); } catch (Exception e) {
throw new BusinessException("根据systemId查询Function出错");
}
log.info("==FunctionAction===getFunctionBySysId=======end="); return "getFunctionBySysId"; }

注意:对于前台页面树形表格的显示是指定了idField为‘functionId’。parentIDField 为'fId',故后台在传递也应该有对应的functionId与fId字段传递过来。然后前台页面如下图,可以自己对比画红框处的字段:

这种方法,比较简单,因为在后台action中无需对数据做过多处理,只需要在前台页面中,指定columnId,idField,parentIDField即可

方法2:

  前台页面:

funcGrid = $("#funcGrid").ligerGrid({
columns : [
{display: '功能编号', name: 'functionId',hide:'true'} ,//
{display: '功能名', name: 'functionName', width: 200 } ,
{ display: '功能描述', name: 'functionDes', minWidth: 60 },
{display : '功能fId', name : 'fId', type : "text", hide:'true'}
],
url:'${baseURL}/getFunctionBySysId.action?systemId='+systemId, tree : {
//要显示为树形的字段name
columnName:'functionName',
isExpand : false
}
width : '100%',
height : '100%',
checkbox : true,
usePager : false,
frozenRownumbers : false,
frozenCheckbox : false,
//rowHeight : 23,
alternatingRow : false,
isChecked: f_isChecked, });

  后台代码:action

//功能树
public String getFunctionBySysId2(){
log.info("==FunctionAction===getFunctionBySysId=======start=");
//1.获取fid为0的function
//2.根据父function获取子function
try {
//List<Function> functionList = functionService.getAllBySysId(Integer.parseInt(systemId));
//获取所有的一级function
List<Function> functionList = functionService.getAllOneLevelBySysId(Integer.parseInt(systemId));
List<FunctionVO22> functionVOList = new ArrayList<>();
for (int i = 0; i < functionList.size(); i++) {
FunctionVO22 f1 = new FunctionVO22();
f1.setFunctionId(functionList.get(i).getFunctionId());
f1.setFunctionName(functionList.get(i).getFunctionName());
f1.setFunctionDes(functionList.get(i).getFunctionDes());
f1.setfId(functionList.get(i).getfId()); //根据一级function查询对应的子function
List<Function> childrenList = functionService.getAllTwoLevel(functionList.get(i).getFunctionId(),Integer.parseInt(systemId));
List<FunctionVO22> functionVOList2 = new ArrayList<FunctionVO22>();
for(int i2 = 0; i2 < childrenList.size(); i2++){
FunctionVO22 f2 = new FunctionVO22();
f2.setFunctionId(childrenList.get(i2).getFunctionId());
f2.setFunctionName(childrenList.get(i2).getFunctionName());
f2.setFunctionDes(childrenList.get(i2).getFunctionDes());
f2.setfId(childrenList.get(i2).getfId());
functionVOList2.add(f2);
System.out.println("functionVOList2.size=="+functionVOList2.size());
}
//将二级function设置到一级function中
f1.setChildren(functionVOList2);
functionVOList.add(f1);
}
Map<String, Object> map = new HashMap<>();
map.put("Rows", functionVOList);
map.put("Total", functionVOList.size());
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
jsonObject = JSONObject.fromObject(map, jsonConfig);
log.info("jsonObject:" + jsonObject); } catch (Exception e) {
e.printStackTrace();
throw new BusinessException("根据systemId查询Function出错");
}
log.info("==FunctionAction===getFunctionBySysId=======end="); return "getFunctionBySysId"; }

  涉及到的实体类:FunctionVO22

package com.fums.vo;

import java.util.List;

public class FunctionVO22 {
private Integer functionId;
private String functionName;
private String functionDes;
//父功能id
private Integer fId;
//子功能集合
private List<FunctionVO22> children; public Integer getFunctionId() {
return functionId;
} public void setFunctionId(Integer functionId) {
this.functionId = functionId;
} public String getFunctionName() {
return functionName;
} public void setFunctionName(String functionName) {
this.functionName = functionName;
} public String getFunctionDes() {
return functionDes;
} public void setFunctionDes(String functionDes) {
this.functionDes = functionDes;
} public Integer getfId() {
return fId;
} public void setfId(Integer fId) {
this.fId = fId;
} public List<FunctionVO22> getChildren() {
return children;
} public void setChildren(List<FunctionVO22> children) {
this.children = children;
}
}

  这里主要对FunctionVO22做代码的展示,因为这是对Function实体类的一个封装类,里面涉及到了需要的一些字段,这里如果要在页面进行树型表格显示,可在Function22中

加入一个本身的集合(对象中有一个对象集合的属性)。使其传递过去的数据格式经过json格式的转换变为如下图这样(举例说明拿的api中的demo数据,图中的数据字段可以根据自己的做对应的修改):

  虽然这种方法在前台页面只需要指定要显示为树形的字段即可(也可以将columnName字段换为columnId : 'functionName',不过前提是functionName是一个id字段,这里我没有配置id字段,故使用columnName,即name字段),如下图

但是却比第一种方法在后台action中对数据的处理要复杂的多,可自行选择。

成功截图:嘻嘻嘻嘻嘻嘻嘻~~~~~~~~~~~~~~~~~~~~收拾 下班。。

ligerUI---ligerGrid中treegrid(表格树)的使用的更多相关文章

  1. treegrid 表格树

    treegrid  实现表格树的结构 效果图: 第一步:页面布局 <div class="col-sm-12 select-table table-striped" styl ...

  2. treegrid -表格树异步加载

    问题: 机构维护时,前端框架用的是easyui,如果同步全加载会出现页面延迟严重,影响用户体验 解决: 机构逐层加载,点击后加载 逐层加载会出现一个问题:子节点只有点击后才能加载子集 所以开始为叶子节 ...

  3. easyUI中treegrid组件构造树形表格(简单数据类型)+ssm后台

    这几天做的项目要求用树形表格的形式展示一部分数据,于是就想到了使用easyUI的treegrid组件,但几经翻查各种资料,发现数据类型大多采取标准数据类型,即包含children元素的数据类型,小编查 ...

  4. vue 表格树 固定表头

    参考网上黄龙的表格树进行完善,并添加固定表头等的功能,目前是在iview的项目中实现,如果想在element中实现的话修改对应的元素标签及相关写法即可. <!-- @events @on-row ...

  5. spread表格树实现

    先上图看下效果图: 玩表格的朋友应该对Component和C1Flexgrid并不陌生吧.其实我也有用C1和DGV扩展了一个表格树,占有内存小,效率也可以,但是UI是硬伤,中规中矩,不美观.我上面是基 ...

  6. 关于SWT中的表格(TableViewer类)

    JFace是SWT的扩展.它提供了一组功能强大的界面组件.其中包含表格,树,列表.对话框,向导对话框等. 表格是一种在软件系统中很常用的数据表现形式.特别是基于数据库的应用系统.表格更是不可缺少的界面 ...

  7. table-tree 表格树、树形数据处理、数据转树形数据

    前言 公司想搞个表格树的展示页面,看着element有个表格树,还以为可以用. 用出来只用表格没有树,研究半天没研究个所以然,只能从新找个 npm里找到一个:vue-table-with-tree-g ...

  8. 表格树控件QtTreePropertyBrowser编译成动态库(设计师插件)

    目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidgetIn ...

  9. 超级实用的表格树控件--QtTreePropertyBrowser

    目录 一.源码下载 二.代码编译 1.intersect函数替换为intersected 2.移除UnicodeUTF8 3.QtGui模块拆分 4.Q_TYPENAME错误 5.qVariantVa ...

随机推荐

  1. iOS逆向环境以及常用命令行(逆向一)

    一.环境介绍 越狱环境:iPhone 5s iOS9.3.1 yueyu:~ root# uname -a Darwin yueyu 15.4.0 Darwin Kernel Version 15.4 ...

  2. 快速搭建属于自己的数据库——mongodb

    为了真实模拟一个项目上线,拥有前端后端数据库都具备的功能,我选择了mongodb作为项目的数据库支持,这里分享一些mongodb的经验心得和血的教训. mongoddb安装 在本地安装 直接通过官网下 ...

  3. 【JVM】Java中的JavaCore/HeapDump文件及其分析方法

    产生时间 Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下. 有时致命问题发生后,Java应用不会死掉,还能继续运行: 但有时致命问题 ...

  4. JSP入门 分页

            <div> <%      Integer pageNo = (Integer) request.getAttribute("pageNo");  ...

  5. 51nod 1536不一样的猜数游戏 思路:O(n)素数筛选法。同Codeforces 576A Vasya and Petya's Game。

    废话不多说,先上题目. 51nod Codeforces 两个其实是一个意思,看51nod题目就讲的很清楚了,题意不再赘述. 直接讲我的分析过程:刚开始拿到手有点蒙蔽,看起来很难,然后......然后 ...

  6. mysql error 1290 hy000:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statemen' 解决方案

    如果在执行授权命令的时候报错 mysql> grant all privileges on *.* to root@"; ERROR (HY000): The MySQL server ...

  7. Crossin-8-1;8-2课程记录

    打开文件:    open,注意打开文件的路径    读取结束需使用close读取文件:    read    readlines    readline    for in 重置光标位置:   se ...

  8. ios实现无限后台任务

    需求 我们的app是使用心跳机制来保持用户的登陆状态,这样才能收到服务器发来的消息和命令,但是当app进入后台以后大约3分钟或者10分钟之后app就会被系统挂起,用户就会超时下线,这样就必须保持app ...

  9. 【JAVA零基础入门系列】Day6 Java字符串

    字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...

  10. Hadoop(三)手把手教你搭建Hadoop全分布式集群

    前言 上一篇介绍了伪分布式集群的搭建,其实在我们的生产环境中我们肯定不是使用只有一台服务器的伪分布式集群当中的.接下来我将给大家分享一下全分布式集群的搭建! 其实搭建最基本的全分布式集群和伪分布式集群 ...