JQuery databases 动态合并单元格

	function fnMergeGroupColums(mergeGroupColums){
		var api = this.api(); 
		
		var rows = api.rows( {page:'current'} ).nodes();
		for(var x in mergeGroupColums){
			var groups = mergeGroupColums[x];
			var by = groups.by;
			
			var last=null;
			var tr = null;
			var trHolder = null;
			var maxSame=1;
			
			var merCols = [];
			var colsLast = [];
			var cols = groups.cols;
			for(var i in cols){
				var col = groups.cols[i];
				merCols.push(typeof(col)=="number"?col:col.index);
				colsLast.push(null);
			}
			var seq = 0;
			var data =  api.column(by, {page:'current'} ).data();
			var mergeData =  api.columns(merCols, {page:'current'}).data();
			
			data.each( function ( group, i ) {
				console.log(data.length)
				tr = $(rows[i]);				            	
				if(i==0){
					last = group;
					for(var j in colsLast){
						colsLast[j] = mergeData[j][i];
					}
					trHolder = tr;
				}
				else if (last!=group) {
					seq ++;
					
					for(var j in merCols){
						var col = cols[j];
						var text = null;
						if(col.content=="seq"){
							text = seq;
						}
						else if(col.content instanceof Function){
							text = col.content(); 
						}
						else{
							text = colsLast[j];
							text = text == null ? "" : text;
						}
						$("td:eq("+merCols[j]+")",trHolder)
						.attr("rowspan",maxSame).text(text)
						.css("vertical-align","middle");;
					}
					
					last = group;
					for(var j in colsLast){
						colsLast[j] = mergeData[j][i];
					}
					trHolder = tr;
					maxSame = 1;
				}else{
					maxSame++;
					for(var j in merCols){
						$("td:eq("+merCols[j]+")",tr).hide();
					}
				}
				
				if(i==data.length-1){
					seq ++;
					for(var j in merCols){
						var col = cols[j];
						var text = null;
						if(col.content=="seq"){
							text = seq;
						}
						else if(col.content instanceof Function){
							text = col.content(); 
						}
						else{
							text = colsLast[j];
							text = text == null ? "" : text;
						}
						
						$("td:eq("+merCols[j]+")",trHolder)
						.attr("rowspan",maxSame).text(text)
						.css("vertical-align","middle");
					}
				}
			});
		}
	}


调用:

var table = $('#example').initTable({
 //合并单元格
			mergeGroupColums:[{
				by:4,//根据那一列合并
				cols:[
					0,1,2,3 //合并那几列
				]
			}],
});

效果图:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值