datagrid 动态合并行

easyui datagrid 需要动态合并行,可以考虑在加载完数据之后按照文本合并

$('#datagrid').datagrid({    
			    method:"post",
			    loadMsg:'数据加载中请稍后……',
			    pagination:false,
			    rownumbers:false, 
			    resizable:true,
			    fitColumns:true,
			    nowrap:true,
			    singleSelect:true,
		        striped : true,
		        data:data,
			    columns:[[
			        // ...
			    ]],
			    onLoadSuccess:function (data){
			    	console.log(data);
				    	if(data.rows.length>0){
				    		mergeCell("datagrid","colName1,colName2");
				    	}
			    	} 
			});
		}



加载之后对传入的列 动态合并

		function mergeCell(dgId,fields){
			var fieldArray=fields.split(",");
			var dg=$('#' + dgId);
			var rowCount=dg.datagrid("getRows").length;
			for (var i = 0; i < fieldArray.length; i++) {
				var begin=0;
				var length=0;
				var perTxt="";
				var curTxt="";
				var field = fieldArray[i];
				for (var j = 0; j < rowCount; j++) {
					curTxt=dg.datagrid("getRows")[j][field];
					if (curTxt==perTxt) {
						length++;
					}else if(length==0){
						begin++;
					}
					if ((curTxt!=perTxt&&length!=0)||(curTxt==perTxt&&j==rowCount-1)) {
						dg.datagrid("mergeCells",{
							index: begin-1,
		                    field: field,
		                    rowspan: length+1,
		                    colspan: null
						});
						begin+=(length+1);
						length=0;
					}
					perTxt=curTxt;
				}
			}
		}



后面发现下面情况子列会跨父列合并:

 

124
125
135

 


希望不要合并 5,修改代码如下:

function mergeCell(dgId,fields){
			var fieldArray=fields.split(",");
			var dg=$('#' + dgId);
			var rowCount=dg.datagrid("getRows").length;
			for (var i = 0; i < fieldArray.length; i++) {
				var begin=0;
				var length=0;
				var perTxt="";
				var curTxt="";
				var field = fieldArray[i];
				for (var j = 0; j < rowCount; j++) {
					curTxt="";
					for (var k = 0; k <= i; k++) {
						curTxt+=dg.datagrid("getRows")[j][fieldArray[k]];
					}
					if (curTxt==perTxt) {
						length++;
					}else if(length==0){
						begin++;
					}
					if ((curTxt!=perTxt&&length!=0)||(curTxt==perTxt&&j==rowCount-1)) {
						dg.datagrid("mergeCells",{
							index: begin-1,
		                    field: field,
		                    rowspan: length+1,
		                    colspan: null
						});
						begin+=(length+1);
						length=0;
					}
					perTxt=curTxt;
				}
			}
		}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值