ligerUI---ligerGrid中treegrid(表格树)的使用

写在前面:

  表格树是在普通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";

    }

注意:对于前台页面树形表格的显示是指定了parentIDField 为‘fId‘,故后台在传递也应该有对应的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数据,图中的数据字段可以根据自己的做对应的修改):

  虽然这种方法在前台页面只需要指定要显示为树形的字段即可,如下图

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

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

时间: 2024-08-28 21:53:16

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

treegrid 表格树

treegrid  实现表格树的结构 效果图: 第一步:页面布局 <div class="col-sm-12 select-table table-striped" style="padding: 30px"> <table id="norm_table"></table> </div> 第二步:引入JS/CSS //js 一般CDN 上都有 <link href="https://

treegrid -表格树异步加载

问题: 机构维护时,前端框架用的是easyui,如果同步全加载会出现页面延迟严重,影响用户体验 解决: 机构逐层加载,点击后加载 逐层加载会出现一个问题:子节点只有点击后才能加载子集 所以开始为叶子节点图标,点击后变成枝节点,不点就误以为到最后一层 目前的解决办法是加载是提供状态属性,默认关闭,加载不到子集时展开状态为叶子节点图标 实现: function initOrgMaintainDetail(versionId){ var tree = $("#orgMaintainDetail&quo

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

目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidgetInterface 2.添加到插件列表 3.拷贝生成的dll 4.重启Qt Designer 四.多说一句 五.相关文章 一.回顾 上一篇文章超级实用的表格树控件--QtTreePropertyBrowser讲了怎么去编译QtTreePropertyBrowser库,并且可以简单实用.由于我下载的库是基

jQuery LigerUI ligerGrid 在开发中的应用记录

 var  byNumberSwitch = "";  var  intervalSwitch = "";            //间隔设置方法         var dayEditor = { type: 'spinner', minValue: 0,onChanged:function(e){          //提交数据    var setNumber = e.value;//编辑结果    var mendianID = e.record.mendi

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

这几天做的项目要求用树形表格的形式展示一部分数据,于是就想到了使用easyUI的treegrid组件,但几经翻查各种资料,发现数据类型大多采取标准数据类型,即包含children元素的数据类型,小编查遍各种资料,几经实验,小编找到了一种使用简单数据类型的展示树形表格的方法.在这里介绍给大家,仅供参考: 框架使用的是ssm框架,数据库用的是oracle,其中数据库中要展示的表设计成大致如下的样子: 参考了一下easyUI的demo中给出的数据类型,如下格式: 打开里面显示如下: 这是一个json串

vue 表格树 固定表头

参考网上黄龙的表格树进行完善,并添加固定表头等的功能,目前是在iview的项目中实现,如果想在element中实现的话修改对应的元素标签及相关写法即可. <template> <div ref="table" :style="{width:treeGridWidth}" class='autoTable tree-grid'> <div ref="header" class="tree-grid-heade

spread表格树实现

先上图看下效果图: 玩表格的朋友应该对Component和C1Flexgrid并不陌生吧.其实我也有用C1和DGV扩展了一个表格树,占有内存小,效率也可以,但是UI是硬伤,中规中矩,不美观.我上面是基于spread扩展实现的,站在可扩展的角度,C1不错,spread我可以说完全没有扩展性可言么?小日本写的代码感觉很不规范(反编译看的). 实现思路: 首列是重写BaseCellType基类,重绘了UI,主要是线.自定义图标.节点层级的绘制,主要是用rang确定绘制坐标,整个树层级的维护是基于链表实

UEditor 粘贴 Excell 中的表格时报错导致无法粘贴的解决办法

开始->运行->gpedit.msc,打开策略组编辑器,在树状菜单中选 择计算机配置->管理模板->终端服务,在右侧窗口中打开"限制 连接数量",选择"已启用",修改"TS允许的最大连接数",确定 . 完成以上两步可以解决远程连接最大值你能为3个(包括本地控制台 )的问题.如果需要使多用户可以同时使用同一个用户名登录远程连 接,那么还需要进行一下设置: 开始->运行->tscc.msc,打开终端服务配置,点击&

关于SWT中的表格(TableViewer类)

JFace是SWT的扩展.它提供了一组功能强大的界面组件.其中包含表格,树,列表.对话框,向导对话框等. 表格是一种在软件系统中很常用的数据表现形式.特别是基于数据库的应用系统.表格更是不可缺少的界面组件. SWT的表格组件(Table类)还是不怎么使用的,开发中一般还是使用JFace的表格组件TableViewer. TableViewer是在SWT的Table类的基础上扩展而来的.但是Table类并非TableViewer的父类. 附上两个类的继承关系图: