체크박스 이벤트 발생 순서 (event flow)

Bool 타입 셀의 체크/체크해제 시 이벤트 발생 순서를 트리거별로 정리합니다.

1. 개별 셀 마우스 클릭

onMouseDown → onMouseUp → onClick → onBeforeFocus → onFocus
  → onBeforeChange → onAfterChange → onAfterClick

마우스 클릭은 포커스 이동과 값 변경, 클릭 후 처리까지 모두 발생합니다.

2. 개별 셀 키보드 (스페이스/엔터)

onBeforeChange → onAfterChange

키보드 입력은 클릭 이벤트(onClick, onAfterClick)를 동반하지 않고 값 변경 이벤트만 발생합니다.

3. setCheck 호출 (단일 셀)

onBeforeChange → onAfterChange

setCheckignoreEvent 옵션이 없으며 호출 시 항상 위 이벤트가 발생합니다. onClick/onAfterClick은 코드 호출이라 발생하지 않습니다.

4. setValue 호출

setValueonBeforeChange/onAfterChange를 발생시키지 않습니다. 이벤트가 필요하면 setCheck 또는 setAllCheck를 사용하세요.

5. setAllCheck 호출

호출 형태 발생 이벤트
setAllCheck(col, val) 기본 (ignoreEvent 기본값 0) onBeforeCheckAll → 각 행 onBeforeChangeonAfterChangeonCheckAllFinish
setAllCheck(col, val, 1) (이벤트 차단) onBeforeCheckAll → 각 행 onBeforeChange만 → onCheckAllFinish (onAfterChange 차단)

setAllCheck는 기본이 "이벤트 발생"이라 setValue와 반대입니다.
ignoreEvent:1을 줘도 onBeforeChange는 차단되지 않으며 onAfterChange만 차단됩니다.
AllCheckIgnoreEvent 컬럼 속성은 setAllCheck 호출에는 적용되지 않으므로 이벤트 차단은 위의 ignoreEvent 인자로만 가능합니다.

6. 헤더 전체 체크박스 사용자 클릭

onMouseDown → onMouseUp → onClick → onBeforeCheckAll
  → 각 행: onBeforeChange → onAfterChange
onCheckAllFinish → onAfterClick

마우스 클릭 이벤트(onMouseDown/onMouseUp/onClick/onAfterClick)와 전체 체크 이벤트가 함께 발생합니다.
AllCheckIgnoreEvent:1로 설정된 컬럼은 각 행의 onAfterChange가 차단됩니다.

Read More