mini-datagrid 中调用 : onLoad=“onLoadSchedule”
//根据相同的编号进行动态合并相同值的列
function onLoadSchedule(e) {
var grid = e.sender;
var len = grid.data.length;
var i = 0,num = 1, b = 1,a = 0, no = 0;;
//定义数组
var marges = [];
for (i; i < len; i++) {
if (i == len - 1) {
var k = i + 1 - num;
//动态添加合并的参数,rowIndex开始行数(0开始),columnIndex列数(0开始),rowSpan合并的行数,colSpan合并的列数
for (var j = 1; j < grid.columns.length; j++) {
if (j < 5) {
marges.push({ rowIndex: k, columnIndex: j, rowSpan: num, colSpan: 0 });
}
}
//循环2级合并类判断
no += num; //获取当前的列数
for (a; a < no; a++) {
if (a == no - 1) { //最后一行的合并
var k = i + 1 - b;
marges.push({ rowIndex: k, columnIndex: 5, rowSpan: b, colSpan: 0 });
continue;
}
if (grid.data[a].GWname == grid.data[a + 1].GWname) {
b++; //做为计算的参数
}
if (grid.data[a].GWname != grid.data[a + 1].GWname) {
var k = a + 1 - b;
marges.push({ rowIndex: k, columnIndex: 5, rowSpan: b, colSpan: 0 });
b = 1;
}
}
num = 1;
grid.mergeCells(marges);
continue;
}
//如果两个数的编号相等
if (grid.data[i].ProjCode == grid.data[i + 1].ProjCode) {
num++; //做为计算的参数
}
//编号不相等的时候进行合并
if (grid.data[i].ProjCode != grid.data[i + 1].ProjCode) {
//取出要合并的行数,i从0开始
var k = i + 1 - num;
//动态添加合并的行
for (var j = 1; j < grid.columns.length; j++) {
if (j < 5) { //从2行到第四行的合并
marges.push({ rowIndex: k, columnIndex: j, rowSpan: num, colSpan: 0 });
}
}
no += num; //获取此时的行数
num = 1; //清空num值
//循环判断2级合并数据
for (a; a < no; a++) {
//岗位一致
if (grid.data[a].GWname == grid.data[a + 1].GWname) {
b++; //做为合并行的参数的计数
}
//岗位不一致
if (grid.data[a].GWname != grid.data[a + 1].GWname) {
var k = a + 1 - b;
//生成合并列的数组
marges.push({ rowIndex: k, columnIndex: 5, rowSpan: b, colSpan: 0 });
b = 1; //清空用于计数的b
}
}
}
}
grid.mergeCells(marges);
}