CheckBar에서 자식 노드 연동하여 체크하기
자식노드들이 모두 체크되었을때 부모노드도 체크되게 하는 예제입니다.
체크바에 체크시 발생하는 onItemChecked() 이벤트에서 체크하는 동작을 넣어 처리하였습니다.
function checkNode(grid, dataRow, checked) {
var provider = grid.getDataSource();
//형제노드체크 후 부모노드 체크
checkSiblingNode(grid, dataRow, checked);
//자식노드체크
var desRows = provider.getDescendants(dataRow);
if (desRows) {
grid.checkRows(desRows, checked, false);
}
};
function checkSiblingNode(grid, dataRow, checked) {
console.log("start-rowId2 checkedValue: " + grid.isCheckedRow(2));
var provider = grid.getDataSource();
//부모노드
var parent = provider.getParent(dataRow);
//형제노드
var sibling = parent == -1 ? provider.getChildren() : provider.getChildren(parent);
console.log(sibling);
var index = sibling.indexOf(dataRow);
//자기자신은 제외
if (index !== -1) sibling.splice(index, 1);
if (checked) {
for (var i in sibling) {
var value = grid.isCheckedRow(sibling[i]);
if (checked != value) {
checked = false;
break;
}
}
} else {
checked = false;
}
if (parent > -1) grid.checkRow(parent, checked, false, false);
//checkBar.head 영역의 V표시 제어
if (parent == -1) grid.setAllCheck(checked, false);
if (parent > -1) checkSiblingNode(grid, parent, checked);
}
treeView.onItemChecked = function (grid, itemIndex, checked) {
var dataRow = grid.getDataRow(itemIndex);
checkNode(grid, dataRow, checked);
};