转自http://bbs.blueidea.com/thread-3067461-1-1.html 谢谢原作者的代码和分享
效果:同列相邻的单元格,值相同的,合并单元格。
优化后的代码:
function Merger(gridName, CellName) {
//得到显示到界面的id集合
var mya = $("#" + gridName + "").getDataIDs();
//数据总行数
var length = mya.length;
//定义合并行数
var rowSpanTaxCount = 1;
for (var i = 0; i < length; i += rowSpanTaxCount) {
//从当前行开始比对下面的信息
var before = $("#" + gridName + "").jqGrid('getRowData', mya[i]);
rowSpanTaxCount = 1;
for (j = i + 1; j <= length; j++) {
//和上边的信息对比 如果值一样就合并行数+1 然后设置rowspan 让当前单元格隐藏
var end = $("#" + gridName + "").jqGrid('getRowData', mya[j]);
if (before[CellName] == end[CellName]) {
rowSpanTaxCount++;
$("#" + gridName + "").setCell(mya[j], CellName, '', { display: 'none' });
} else {
break;
}
}
$("#" + gridName + "").setCell(mya[i], CellName, '', '', { rowspan: rowSpanTaxCount });
}
}
调用方法:
gridComplete: function (data) {
Merger('listname', 'columnname');
}