任务目标
我们需要在一张表中显示数据,但是在某几个字段 ,也就是表的某几个column,如果他们的row的值是一致的,那就将这些row进行跨行合并。
实际操作
逻辑上应该不复杂,不过也还有瑕疵
//tableId是表元素的id,colList是指定需要跨行合并的字段(字符串变量,用","进行分割)
function mergeByFields(tableId,cols){
var colArr=cols.split(',');
var tTable=$("#"+tableId);
//后台返回的记录行数
var rowCnt=tTable.datagrid("getRows").length;
var perTxt="";
vat curTxt="";
for(var i=colArr.length;i>=0;i--){
var limit=1;
var index=0;
//每次对行遍历起始时perTxt为i列第一行数据
perTxt=tTable.datagrid("getRows")[0][colArr[i]];
for(var j=1;j<rowCnt;j++{
//curTxt指向实时遍历数据
curTxt=tTable.datagrid("getRows")[j][colArr[i]];
//如果当前到最后一行
if(j=rowCnt-1&&perTxt==curTxt){
index=j-limit;
tTable.datagrid("mergeCells",{
index:index,
field:colArr[i],
rowspan:limit+1,
colspan:null
});
}
if(perTxt==curTxt){
limit+=1;
}else if(perTxt!=curTxt){
index=j-limit;
tTable.datagrid("mergeCells",{
index:index,
field:colArr[i],
rowspan:limit,
colspan:null
});
perTxt=tTable.datagrid("getRows")[j][colArr[i]];
limit=1;
}
}
}
}