写在前面:

  表格树是在普通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. 随机算法 poj 2576 Tug of War

    Tug of War Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 8187   Accepted: 2204 Descri ...

  2. 一个强迫症的Git 选择

    选择 1,经常性的commit or 干净的历史 在本地(私有)的开发分支中,选择经常性的commit,以便于实时记录修改,回退等操作.eg.develop,feature... 实现方式: comm ...

  3. LCT学习笔记

    最近自学了一下LCT(Link-Cut-Tree),参考了Saramanda及Yang_Zhe等众多大神的论文博客,对LCT有了一个初步的认识,LCT是一种动态树,可以处理动态问题的算法.对于树分治中 ...

  4. BS4爬取糗百

    -- coding: cp936 -- import urllib,urllib2 from bs4 import BeautifulSoup user_agent='Mozilla/5.0 (Win ...

  5. android中跨线程向控件传值的问题

    activity.oncreate(bundle savedinstancestate)中创建一个handler类的实例, 在这个handler实例的handlemessage回调函数中调用更新界面显 ...

  6. Python 基础之函数、深浅copy,set及练习

    三元运算符通常在Python里被称为条件表达式,这些表达式基于真(true)/假(not)的条件判断,在Python 2.4以上才有了三元操作. 语法格式: X if C else Y 有了三元表达式 ...

  7. UITextView实现限制100字

    placeHoderLable = [[UILabel alloc]initWithFrame:CGRectMake(3, 3, DeviceWidth-6, 40)]; //根据情况调节位置 pla ...

  8. Why does eclipse automatically add appcompat v7 library support whenever I create a new project?

    Best ways to solve these: Firstly in project,Right click->properties->Android.There you can se ...

  9. Java继承--覆盖

    java中支持单继承.不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有一个直接父类. 多继承:一个子类可以有多个直接父类(java中不允许,进行改良).不直接支持,因为多个 ...

  10. JSP中的九大隐式对象及四个作用域

    在这篇博文中,我们将讨论和学习JSP中的隐式对象及四个作用域. 一.九大隐式对象 这些对象是JSP容器为每个页面中的开发人员提供的Java对象,开发人员可以直接调用它们而不用显式地声明它们再调用. J ...