使用easyUI数据表格生成子表格

本文介绍如何在EasyUI的数据表格中嵌套子表格,并提供了一段详细的代码示例。通过设置特定属性,如view、detailFormatter及onExpandRow,可以实现在主表格行内展开子表格的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

"自去自来堂前燕,相亲相近水中鸥"
使用easyUI时,难免会遇到各种刁难的问题.比如在数据表格中生成子表格.像这种效果.
效果图

那么这里是如何实现的呢.看代码:

$('#phoCheckList').datagrid({
		rownumbers:true,
		pageSize:25,
		pageList: [15,25,35,45],
		fit:true,
		showFooter: true,
		singleSelect:true,
        view: detailview,   //以下三个属性(view,detailFormatter,onExpandRow)决定了子表格能不能展开
        detailFormatter:function(index,row){
            return '<div style="padding:2px;position:relative;"><table class="ddv"></table></div>';
        },
		//点击+号展开子表格
        onExpandRow: function(index,row){
            var ddv = $(this).datagrid('getRowDetail',index).find('table.ddv');
            ddv.datagrid({
                url:'controller/xxx/getlist.json',
                fitColumns:true,
                singleSelect:true,
                // pagination:true,
                // rownumbers:true,
                loadMsg:'正在加载...',
                queryParams:{
                    startDate:row.auditTime,
					// page:1,
                    rows:100
				},
                height:'auto',
                columns:[[
                    {
                        title:'操作类型',
                        field: 'operate_type',
                        width:100
                    },
                    {
                        title:'订单总量',
                        field: 'serialNumberTotal',
                        width:150
                    },
                    {
                        title:'订单通过数量',
                        field: 'orderPassNumber',
                        width:150,
						formatter:function (value,row,index) {
							return row.serialNumberTotal - row.notPassSerialNumber;
                        }
                    },

                    {
                        title:'订单未通过数量',
                        field: 'notPassSerialNumber',
                        width:150

                    },

                    {
                        title:'已回传图片总量',
                        field: 'photoNumer',
                        width:150

                    },
                    {
                        title:'订单图片差值',
                        field: 'orderPhotoDiff',
                        width:150,
                        formatter:function (value,row,index) {
                            return row.serialNumberTotal * 2 - row.photoNumer;
                        }
                    }
                    ,
                    {
                        title:'已通过已回传图片总量',
                        field: 'passSerialPhotoTotal',
                        width:150
                    }  ,
                    {
                        title:'已通过未回传图片总量',
                        field: 'passSerialNoPhotoTotal',
                        width:150,
                        formatter:function (value,row,index) {
                            return (row.serialNumberTotal - row.notPassSerialNumber) * 2 - row.passSerialPhotoTotal;
                        }
                    }
                    ,
                    {
                        title:'未通过已回传图片总量',
                        field: 'noPassSerialPhotoTotal',
                        width:150
                    } ,
                    {
                        title:'未通过未回传图片总量',
                        field: 'noPassSerialNoPhotoTotal',
                        width:150,
                        formatter:function (value,row,index) {
                            return row.notPassSerialNumber * 2 - row.noPassSerialPhotoTotal;
                        }
                    }
                ]],
                onResize:function(){
                    $('#phoCheckList').datagrid('fixDetailRowHeight',index);
                },
                onLoadSuccess:function(){
                    setTimeout(function(){
                        $('#phoCheckList').datagrid('fixDetailRowHeight',index);
                    },0);
                }
            });
            $('#phoCheckList').datagrid('fixDetailRowHeight',index);
        },
//		checkOnSelect: true, 
//		selectOnCheck: true,
	    columns:[[
	         {
		    	title:'日期',
		    	field: 'auditTime',
		    	width:100 
		    },
		    {
		    	title:'订单总量',
		    	field: 'orderNumber',
		    	width:150
		    },   
		    {
		    	title:'订单通过数量',
		   		field: 'orderPassNumber',
		    	width:150
		    }, 
		    
		    {
		    	title:'订单未通过数量',
			    field: 'orderFailedNumber',
			    width:150
			   
		     },

		    {
		    	title:'已回传图片总量',
			    field: 'photoNumber',
			    width:150
			   
		     },
		     {
		    	title:'订单图片差值',
			    field: 'orderPhotoDiff',
			    width:150
			  }
			  ,
		     {
		    	title:'已通过已回传图片总量',
			    field: 'photoPassReturnNumber',
			    width:150
			  }  ,
		     {
		    	title:'已通过未回传图片总量',
			    field: 'photoPassNotReturnNumber',
			    width:150
			  }
			  ,
			  {
				  title:'未通过已回传图片总量',
				  field: 'photoFailedReturnNumber',
				  width:150
			  } ,
			  {
				  title:'未通过未回传图片总量',
				  field: 'photoFailedNotReturnNumber',
				  width:150
			  }
		]],
		//双击事件
		onDblClickRow:function(rowIndex,rowData) {
			var node = {
					text:rowData.auditTime + '实名认证对账报表',
					attributes:{
						//传当天的日期过去查询对账详单
						url:'xxx.jsp?currentDate=' + rowData.auditTime,
						menucode:'icon-menu'
					},
					iconCls:'icon-menu'
			};
			parent.addTab(node);
		},
		pagination:true,
		loadMsg:'正在加载...'
	});

就这段代码就可以达到以下的效果 :
结果图

最后附上官方示例

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值