【EasyUI DataGrid DetailView】表格嵌套子表格

一、功能描述

在做项目的时候,要求能够对某一行的数据进行折叠显示,用来查看该行的详细信息。拟通过采用easyui的detailview创建表格分组,大致的效果图如下所示:

这里写图片描述

二、使用方法

     本篇博客承接以前的一篇博客:https://blog.csdn.net/wilson_m/article/details/81334583

     即所要实现的功能为:点击柱状图显示该数据的详细信息,折叠打开某一行,显示该行的详细数据信息。

该功能依赖于datagrid-detailview.js文件,网上下载便可。

注意:引入该js的时候,该js的位置一定要在jquery.easyui.min.js的下方,不然在detailview.js中会报以下错误:

这里写图片描述

属性

名称 类型 描述 默认值
detailFormatter function(index,row) 返回行明细内容的格式化函数

事件

名称 参数 描述
onExpandRow index,row 当展开一行时触发。
onCollapseRow index,row 当折叠一行时触发。

方法

名称 参数 描述
fixDetailRowHeight index 固定明细行的高度。
getExpander index 获取行扩展对象。
getRowDetail index 获取行明细容器。
expandRow index 展开一行。
collapseRow index 折叠一行。
2.1 表格嵌套js代码如下
myChart.on('click', function (params) {
   
            if (params.componentType === 'series') {
                if (params.seriesType === 'bar') {
                    var selectItemValueRec=params.name;
                    $('#dg1').datagrid({
                        url: '/getStatisticDataGridList',
                        method: 'get',
                        queryParams: {
                            sourceItemValue: sourceItemValue,
                            groupItemValue: groupItemValue,
                            selectItemValueRec: selectItemValueRec
                        },
                        border: false,
                        singleSelect: false,
                        fit: true,
                        collapsible: false,
                        pagination: true,
                        pageSize:30,
                        pageList:[10,30,50,70,100],
                        fitColumns: true,
                        view: detailview,
                        detailFormatter:function(index,row){
   
                            return '<div style="padding:2px"><table class="ddv"></table></div>';
                        },
                        onExpandRow: function(index,row){
   
                            var ddv = $(this).datagrid('getRowDetail',index).find('table.ddv');
                            ddv.datagrid({
                                url:'getEchartsDetailInfo',
                                queryParams:{
                                    traintype:row.traintype,
                                    trainNo:row.trainNo
                                },
                                method: 'get',
                                border: true,
                                fitColumns:true,
                                singleSelect:true,
                                rownumbers:true,
                                loadMsg:'加载中,请稍后...',
                                height:'auto',
                                columns:[[
                                    {field:'traintype',title:'培训类型',width:200},
                                    {field:'trainNo',title:'培训编号',width:200},
                                    {field:'teacherNo',title:'教师工号',width:200},
                                    {field:'teacherName',title:'教师姓名',width:200},
                                    {field:'workUnit',title:'工作单位',width:200},
                                    {field:'teacherAge',title:'教师年龄',width:200}
                                ]],
                                onResize:function(){
   
                                    $('#dg1').datagrid('fixDetailRowHeight',index);
                                },
                                onLoadSuccess:function(){
   
                                    $('#dg1').datagrid('fixDetailRowHeight',index);
                                }
                            });
                            $('#dg1').datagrid('fixDetailRowHeight',index);
                        }
                    });
                    $('#window1').window('open');
                }
            }
        });
2.2 后台代码如下
//mapper层
    @Select("select * from v_all where traintype = #{traintype} and  trainNo = #{trainNo}")
    public List<All> getEchartsDetailInfo(@Param( "traintype" ) String traintype,@Param( "trainNo" ) String trainNo);

//service层
    public List<All> getEchartsDetailInfo(String traintype,String trainNo){
        return integratedQueryMapper.getEchartsDetailInfo(traintype, trainNo);
    }

//controller层
    @RequestMapping(value = "/getEchartsDetailInfo",method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public Map getEchartsDetailInfo(@RequestParam("traintype") String traintype, @RequestParam("trainNo") String trainNo, HttpSession session,HttpServletRequest request){

        List<All>  getEchartsDetailInfo = integratedQueryService.getEchartsDetailInfo(traintype,trainNo);
        Map resultMap=new HashMap();
        resultMap.put("rows",getEchartsDetailInfo);
        return resultMap;
    }
2.4 datagrid-detailview.js代码如下
$.extend($.fn.datagrid.defaults, {
    autoUpdateDetail: true  // Define if update the row detail content when update a row
});

var detailview = $.extend({}, $.fn.datagrid.defaults.view, {
    render: function(target, container, frozen){
   
        var state = $.data(target, 'datagrid');
        var opts = state.options;
        if (frozen){
            if (!(opts.rownumbers || (opts.frozenColumns && opts.frozenColumns.length))){
                return;
            }
        }

        var rows = state.data.rows;
        var fields = $(target).datagrid('getColumnFields', frozen);
        
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值