使用EasyUI的datagrid实现报表统计,添加总计行,选中数据行的求和计算等

效果图如下:

使用EasyUI的datagrid实现报表统计,添加总计行,选中数据行的求和计算等_第1张图片

使用EasyUI的datagrid实现报表统计,添加总计行,选中数据行的求和计算等_第2张图片

jsp前台页面:

全选 订单编号 运单号 渠道编码 渠道名称 联系人 联系电话 配送地址 商品名称 件数 数量(张) 重量(KG) 首重费用(元) 续重费用(元) 保价原值(元) 保价费(元) 合计(元) 配送日期

js实现:

//列表数据查询
function queryDetails(){
	var startTime = $.trim($("#startTime").val());
	var endTime = $.trim($("#endTime").val());
	
	if(startTime == "undefine" || startTime == null || startTime == ''){
		$.walk.alert("请输入交接开始时间!", "info");
		return;
	}
	if(endTime == "undefine" || endTime == null || endTime == ''){
		$.walk.alert("请输入交接结束时间!", "info");
		return;
	}
	
	$("#datagridTable").datagrid({
		url : baseUrl + "/logisticsStatus/qryLogistcsDeliverDay",
		queryParams : {
			startTime:startTime,
			endTime:endTime
		},
		pageNumber:1,
		pageSize:5,
		nowrap:false,
		pageList:[30,50,100,200,300],
		pagination: true,
		loadMsg: "数据加载中....",
		collapsible: true,
//		onClickCell:function (rowIndex, field, value){
//			setTimeout(function(){
//				reckon();
//			},1);
//		},
		onCheck:function (rowIndex, rowData){
			setTimeout(function(){//延时执行自己体会效果
				debugger;
				reckon();
			},0.001);
		},
		onUncheck:function (rowIndex, rowData){
			setTimeout(function(){
				reckon();
			},0.001);
		},
		onLoadSuccess: onLoad
	});
}

//计算总计
function onLoad(){
	//给全选复选框绑定click事件
	$(".datagrid-header-check").children('input').bind("click",function(){
		setTimeout(function(){
			reckon();
		},0.001);
	});
	
	//初始化添加总计行
	addTotalRow();
}
//初始化添加总计行
function addTotalRow(){
	//添加“合计”列-[添加统计行]
	$('#datagridTable').datagrid('appendRow',{
		TRADE_ID: '合             计:         ' + '共 ' + sumTotal() + ' 单',
		PAGE_NUM: '' + compute("PAGE_NUM") + '',
		COMMDITY_NUM: '' + compute("COMMDITY_NUM") + '',
		WEIGHT: '' + compute("WEIGHT").toFixed(3) + '',
		FIRST_WEIGHT_FEE: '' + compute("FIRST_WEIGHT_FEE").toFixed(2) + '',
		FEIGHT_FEE: '' + compute("FEIGHT_FEE").toFixed(2) + '',
		PROT_ORGFEE: '' + compute("PROT_ORGFEE").toFixed(2) + '',
		PROT_FEE: '' + compute("PROT_FEE").toFixed(2) + '',
		FEIGHT_FEE_TOTAL: '' + compute("FEIGHT_FEE_TOTAL").toFixed(2) + ''
     });
	
	//合并单元格
	var rowsTotal = $('#datagridTable').datagrid('getRows');//获取最新的所有行
	$('#datagridTable').datagrid('mergeCells',{
		index: rowsTotal.length - 1,
		field: 'TRADE_ID',
		colspan:8
	});
	
	//设置添加行的复选框不可见)
	$(".datagrid-cell-check").children('input')[rowsTotal.length - 1].style.visibility="hidden";
	
	//设置增加过总计标识
	isExt = true;
}

//总计计算
function reckon(){
	//删除统计行,如果存在统计行则删除后重新添加
	if(isExt){
		var rows = $('#datagridTable').datagrid('getRows');
		$('#datagridTable').datagrid('deleteRow', rows.length - 1);
	}
	
	addTotalRow();
}

//总选中条数
function sumTotal(){
	 var rows = $('#datagridTable').datagrid('getSelections');
     return rows.length;
}

//指定列求和
function compute(colName) {
	debugger;
     var rows = $('#datagridTable').datagrid('getSelections');
     var total = 0;
     for (var i = 0; i < rows.length; i++) {
         total += parseFloat(rows[i][colName]);
     }
     return total;
 }

 

 

你可能感兴趣的:(前台jsp+css)