思路
1.需要传入的参数:表格的id选择器的名称,需要合并的字段列的名称
2.声明变量:curtext(当前单元格的值),pretext(前一个单元格的值),rowscnt(需要跨行的行数)
3.循环数据中的每一行,然后获取需要跨行的字段的值,开始比较,如果前一个值和后一个值相同,那么rowscnt就加一,不相同的时候就用当前行的行标减去rowscnt,然后实现单元格合并
代码
function mergeCellsByField(tableID, colList) {
var ColArray = colList.split(",");//将要合并的字段分割成数组
var tTable = $("#" + tableID); //选择器 选择table
var TableRowCnts = tTable.datagrid("getRows").length;//总行数
var tmpA;
var tmpB;
var PerTxt = "";//前一个单元格的内容
var CurTxt = "";//当前单元格的内容
var alertStr = "";
for (j = ColArray.length - 1; j >= 0; j--) {//遍历要合并的字段
PerTxt = "";//前一个单元格
tmpA = 1;//要合并单元格的数量
tmpB = 0;
for (i = 0; i <= TableRowCnts; i++) {
if (i == TableRowCnts) { //最后一行
CurTxt = "";
} else {
CurTxt = tTable.datagrid("getRows")[i][ColArray[j]]; //要合并列当前单元格的内容
}
if (PerTxt == CurTxt) {
tmpA += 1;
} else {
tmpB += tmpA;
tTable.datagrid("mergeCells", {
index : i - tmpA,//从第几行开始合并,第一个单元格是0
field : ColArray[j], //合并字段
rowspan : tmpA,//合并的数量
colspan : null
});
tmpA = 1;
}
PerTxt = CurTxt;
}
}
}
什么时候使用(datagrid数据加载完毕)
onLoadSuccess: function (data) {
if (data.rows.length > 0) {
mergeCellsByField("list", "bkjb");
}
}