先贴上我自己根据easyui的demo中rowborder.html文件写的一个很low的方法
function onLoadSuccess(data){
var rowspans=1; //td的rowspan属性旳值
//之所以从1 开始遍历,而不是0. 看后面
for(var i=1;i<data.rows.length;i++){
if(data.rows[i-1].productid==data.rows[i].productid){
//当前值与上一个值相同 多占一行
rowspans+=1;
//假如当前值是最后行,需要将这个rowspans值放进去
if(i==data.rows.length-1){
if(rowspans!=1){
$(this).datagrid('mergeCells',{
index: i-rowspans+1,
field: 'productid',
rowspan:rowspans
});
}
}
}else{
//当前个与前一个不同,则是另外个数据了。将前一个rowspans保存,
if(rowspans!=1){
$(this).datagrid('mergeCells',{
index: i-rowspans,
field: 'productid';'status',
rowspan:rowspans
});
}
//初始化rowspans
rowspans=1;
}
}
}
下面是转载自:http://www.gogogogo.me/development/EasyUI-DataGrid-mergeCells.html 的高复用性方法
/**
02 * EasyUI DataGrid根据字段动态合并单元格
03 * @param tableID 要合并table的id
04 * @param colList 要合并的列,用逗号分隔(例如:"name,department,office");
05 */
06 function mergeCellsByField(tableID,colList){
07 var ColArray = colList.split(",");
08 var tTable = $('#'+tableID);
09 var TableRowCnts=tTable.datagrid("getRows").length;
10 var tmpA;
11 var tmpB;
12 var PerTxt = "";
13 var CurTxt = "";
14 var alertStr = "";
15 for (j=ColArray.length-1;j>=0 ;j-- )
16 {
17 PerTxt="";
18 tmpA=1;
19 tmpB=0;
20
21 for (i=0;i<=TableRowCnts ;i++ )
22 {
23 if (i==TableRowCnts)
24 {
25 CurTxt="";
26 }
27 else
28 {
29 CurTxt=tTable.datagrid("getRows")[i][ColArray[j]];
30 }
31 if (PerTxt==CurTxt)
32 {
33 tmpA+=1;
34 }
35 else
36 {
37 tmpB+=tmpA;
38 tTable.datagrid('mergeCells',{
39 index:i-tmpA,
40 field:ColArray[j],
41 rowspan:tmpA,
42 colspan:null
43 });
44 tmpA=1;
45 }
46 PerTxt=CurTxt;
47 }
48 }
49 }
函数mergeCellsByField调用:
function workerCount(){
02 $('#coutTable').datagrid({
03 title:'员工统计',
04 height:595,
05 nowrap: false,
06 striped: true,
07 fitColumns:true,
08 url:'<%=path%>/order.do?method=orderCount',
09 queryParams:{date:$('#date').datebox('getValue')},
10 onLoadSuccess:function(data){
11 if (data.rows.length>0)
12 {
13 //调用mergeCellsByField()合并单元格
14 mergeCellsByField("coutTable","department,position");
15 }
16 },
17 columns:[[
18 {title:'编号',field:'number',width:120},
19 {title:'姓名',field:'name',width:120},
20 {title:'部门',field:'department',width:120},
21 {title:'职位',field:'position',width:120}
22 ]],
23 rownumbers:true
24 });
25 }