부모노드가 checked 나 unchecked 되면 자식도 모두 checked 나 unchecked 된다.
자식노드 unchecked 되면 부모노드도 unchecked되게 한다.
on-selection-checked="onSelectionChecked"
onSelectionChecked: function(event)
{
var me = this;
var detail = event.detail;
var checked = detail.checked; //체크하여 변경된값
var data = event.detail.data;
var rowIndex = detail.rowIndex;
var provider = detail.provider;
var nodeIndex = detail.nodeIndex;
if (checked && data.arc_cd_up == "ROOT")
{
me.$.gridPanel.selectionChild(rowIndex, checked);
}
else
{
// 부모노드가 unchecked 되면 자식node도 unchecked
var childIndexes = provider.getChildIndexes(nodeIndex);
var _checkedCnt = 0;
var _uncheckedCnt = 0;
childIndexes.forEach(function(data, index, array)
{
provider.isSelectionChecked(data) ? ++_checkedCnt : ++_uncheckedCnt;
});
// 자식노드의 checked 상태가 all checked or all unchecked 일경우에만 unchecked 작동
if (!(_checkedCnt > 0 && _uncheckedCnt > 0))
{
childIndexes.forEach(function(data, index, array)
{
me.$.gridPanel.selectionCheck(data, checked);
});
}
// 자식노드가 unchecked 되면 부모node도 unchecked
var parentIndex = provider.getParentIndex(nodeIndex);
if (parentIndex > -1 && !checked)
{
me.$.gridPanel.selectionCheck(parentIndex, false);
}
}
},
sc-checkbox-column에서 check전파 참조
http://blog.daonelab.com:8000/post/19/1716/