전에도 같은 이슈가 있었던걸로 아는데요
저도 해더를 3단으로 쓰려다보니 같은 오류가 발생해서 수정 내용 공유합니다.
git이나 기타 적용 방법을 몰라서 글로 남겨요
////수정내용/////
//총문제 2개
//바로 아래 단계의 header col수만큼만 span을 증가시키는데
//바로 아래 단계의 header의 자식 col수도 더해줘야함
//또한 3단으로 가면서 colIndex 붙이는것 또한 변경해줘야함
ax5grid.js 파일 수정 내용
makeHeaderTable(_columns) 이함수 1개 수정했습니다.
var makeHeaderTable = function makeHeaderTable(_columns) {
var columns = _columns,
cfg = this.config,
table = { rows: [] },
colIndex = 0,
maekRows = function maekRows(_columns, depth, parentField) {
var row = { cols: [] };
var i = 0,
l = _columns.length;
var colspan = 1;
var subcolspan = 0;
for (; i < l; i++) {
var field = jQuery.extend({}, _columns[i]);
colspan = 1;
if (!field.hidden) {
field.colspan = 1;
field.rowspan = 1;
field.rowIndex = depth;
field.colIndex = function (index) {
if (!parentField || index != 0) {
return colIndex++;
} else {
colIndex = parentField.colIndex + i + 1;
return parentField.colIndex + i;
}
}(i);
row.cols.push(field); // 복제된 필드 삽입
if ('columns' in field) {
colspan = maekRows(field.columns, depth + 1, field);
} else {
field.width = 'width' in field ? field.width : cfg.columnMinWidth;
}
field.colspan = colspan;
subcolspan += colspan;
} else {}
}
if (row.cols.length > 0) {
if (!table.rows[depth]) {
table.rows[depth] = { cols: [] };
}
table.rows[depth].cols = table.rows[depth].cols.concat(row.cols);
return subcolspan;
} else {
return colspan;
}
};
maekRows(columns, 0);
// set rowspan
for (var r = 0, rl = table.rows.length; r < rl; r++) {
for (var c = 0, cl = table.rows[r].cols.length; c < cl; c++) {
if (!('columns' in table.rows[r].cols[c])) {
table.rows[r].cols[c].rowspan = rl - r;
}
}
}
return table;
};