1. 이벤트 범위 제한하기
IBSheet에서는 모든 이벤트(event)의 기본 동작 범위는 전체 행(헤더, 데이터, 필터, 그룹 포함) 입니다.
예를 들어, onClick, onAfterChange, onDblClick 등 모든 이벤트는 행 범위를 한정하지 않으면 시트 내의 모든 행에서 발생합니다.
즉, 필터 행이나 헤더 행을 클릭해도 동일한 이벤트가 호출됩니다.
따라서 이벤트 핸들러를 작성할 때 반드시 Kind 속성을 활용하여 이벤트 대상 행을 구분해야 합니다.
▼ Kind 종류


Kind는 각 행이 어떤 기능을 수행하는지를 구분하는 속성입니다.
특정 이벤트가 데이터 행에만 적용되어야 하는 경우, 반드시 아래처럼 Kind 조건문을 추가해야 합니다.
onClick: function (e) {
if (e.row.Kind !== "Data") return; // 데이터 행이 아닐 경우 무시
// 클릭 시 동작 처리
}이 조건이 없을 경우, 필터행을 클릭했을 때도 동일한 로직이 실행되어
불필요한 조회나 변경이 일어날 수 있습니다.
2. 공통설정으로 이벤트 범위 제한하기(이벤트 오버라이드)
프로젝트 내에서 매번 이벤트마다 조건을 추가하기 어렵다면,
공통 로직(ibsheet-common.js) 에서 한 번에 제어할 수 있습니다.
아래 예시는 모든 시트의 onClick 이벤트에서 Filter 행을 자동 제외하는 코드입니다.
_IBSheet.onBeforeCreate = function (init) {
if (!init.options["Events"]) init.options["Events"] = {};
init.options.PageEvent = {};
if (init.options["Events"]["onClick"]) {
init.options.PageEvent["onClick"] = init.options["Events"]["onClick"];
}
init.options["Events"]["onClick"] = function (e) {
// ✅ Filter 행일 경우 클릭 이벤트 제외✅
if (e.row.Kind === "Filter") return;
if (e.sheet.options.PageEvent && e.sheet.options.PageEvent["onClick"]) {
return e.sheet.options.PageEvent["onClick"](e);
}
};
return init;
};이 코드를 공통 파일에 등록하면, 모든 시트에서 필터 행 클릭 시 onClick 이벤트가 자동으로 무시됩니다.
단, 공통 오버라이드 방식을 적용할 때는,
각 프로젝트마다 사용 중인 이벤트(onClick, onAfterChange, onDblClick 등)를 모두 확인한 뒤
필요한 이벤트마다 동일한 방식으로 조건을 추가해야 합니다.