보내주신 코드의 formatItem 코드가 다음과 같은데요.
formatItem: function (s, e) {
... 중략 ....
if (row.hasChildren && row.level) {
var curPadding = e.cell.style.paddingLeft.match(/^\d+/)[0] || 0;
e.cell.style.paddingLeft = Number(curPadding) - 23 + "px";
} else if (!row.level && !row.hasChildren) {
var curPadding = e.cell.style.paddingLeft.match(/^\d+/)[0] || 0;
e.cell.style.paddingLeft = Number(curPadding) + 23 + "px";
}
},
위에서 else if 구문이 !row.level 조건때문에 동작을 안하더라구요.
그리고 첫번째 if 구문으로 인해서 root 노드와 바로 다음 child 가 같은 레벨인것처럼 보입니다.
그래서 첫번째 if 구문을 제거하고 else if 구문에서 !row.level 조건을 삭제 해서
부모가 없는 노드를 우측으로 23px 밀어내는 방식으로 해봤거든요.
그리고 제쪽 코드에서는 주신대로 그대로 하면 스크립트 오류가 나서요.
조건문에 && e.cell.style.paddingLeft 이걸 추가해서 최종 코드를 다음과 같이 해서 잘되는거 확인했는데요.
formatItem: function(s, e) {
if (e.panel.cellType != wjcGrid.CellType.Cell) {
return;
}
var curPadding;
let row = e.panel.rows[e.row];
if (!row.hasChildren && e.cell.style.paddingLeft) {
// 오류가 나서 조건 추가
curPadding = e.cell.style.paddingLeft.match(/^\d+/)[0] || 0;
e.cell.style.paddingLeft = Number(curPadding) + 23 + "px";
}
},
이렇게 !row.level 조건을 빼도 문제가 없을지 궁금합니다. !row.level 이 조건의 의미가 궁금합니다.
해결방법 찾아주셔서 감사드리구요. 위 질문에 대한 답변 부탁드립니다.
감사합니다.