체크바
체크바(CheckBar)는 그리드의 특정 행을 선택하기 위해 사용합니다. CheckBar에 의해 선택된 특정 행들은 복사나 삭제등 명령을 일괄처리 하기위해 사용할 수 있습니다.
체크바를 설정하는 방법
체크바의 설정을 변경하는 것은 setCheckBar()를 사용 합니다.
현재 설정된 상태를 확인하는 것은 getCheckBar()을 사용 합니다.
체크바의 화면 표시여부를 지정
visible
: 체크바 영역의 화면 표시여부를 지정합니다.
gridView.setCheckBar({
visible: false,
});
gridView.setCheckBar({
visible: true,
});
한 행만 체크 가능(라디오 버튼)
체크바의 속성중 exclusive 속성을 true 로 설정하면 라디오 버튼처럼 하나의 행만 체크할 수 있습니다.
exclusive
: 하나의 행만 체크가능한지 여부를 지정합니다.
gridView.setCheckBar({
exclusive: true,
});
gridView.setCheckBar({
exclusive: false,
});
모두 체크
기본값으로 체크바의 헤드영역에 v 표시가 되어 있습니다. 이 영역을 클릭하게 되면 모든 행이 체크되게 됩니다.
showAll
: 체크바 헤드 영역의 v 표시여부를 지정합니다. false 인 경우 헤드 영역을 클릭해도 모든 행이 체크되지 않습니다.
gridView.setCheckBar({
showAll: false,
});
gridView.setCheckBar({
showAll: true,
});
체크하기
한 행씩 체크할 수 있는 API
: checkItem(), checkRow()
여러 행을 체크할 수 있는 API
: checkItems(), checkRows()
전체 행을 체크할 수 있는 API
: checkAll()
gridView.checkItem(0, true);
gridView.checkItem(0, false);
아무 컬럼이나 컬럼의 헤더를 클릭하여 소트 후 아래 버튼을 클릭하세요.
gridView.checkRow(0, true);
gridView.checkRow(0, false);
dataRow, itemIndex가 다르기 때문에 결과가 다릅니다.
gridView.checkItems([1, 2], true);
gridView.checkItems([1, 2], false);
아무 컬럼의 헤더를 클릭하여 소트 후 아래 버튼을 클릭하세요.
gridView.checkRows([1, 2], true);
gridView.checkRows([1, 2], false);
Head/Foot
체크바의 헤드와 풋 영역에 글자를 표시할 수 있습니다.
아래 속성을 사용하려면 showAll속성의 값은 false 이어야 합니다.
headText
: head 영역에 표시할 text를 지정한다.footText
: foot 영역에 표시할 text를 지정한다.
gridView.setCheckBar({
showAll: false,
headText: "H",
footText: "F",
});
Checkable 제어
아래와 같은 수식을 사용하여 체크바에 체크 가능 여부를 제어할 수 있습니다.
- values[] - 표시 중인 행의 각 필드 값을 values[“field name”]나 values[fieldIndex]로 리턴.
- row - 표시 중인 행의 Item 인덱스.
- datarow - 표시 중인 행의 데이터행 인덱스.
- checked - 표시 중인 행의 checked 상태. true/false로 리턴.
- checkable - 표시 중인 행의 체크가능 상태. true/false로 리턴.
- state - 표시 중인 행이 참조하는 데이터행의 상태. ‘c’:생성, ‘u’:수정, ‘d’:삭제, ‘x’:생성 후 삭제.
관계 연산자
- equal(같다)는 == 가 아니라
=
입니다. - not equal(같지않다)는 != 가 아니라
<>
입니다. - greater then(크다)는
>
입니다. - less then(작다)는
<
입니다. - not은 ! 가 아니라
not
입니다. - and는 && 가 아니라
and
입니다. - or는 || 가 아니라
or
입니다.
ex)
state = 'c'
: 새로 추가된 행만 체크 가능
values['Gender'] = '남'
: Gender필드값이 '남'인 행만 체크 가능
row < 10
: itemIndex가 10 이하인 행만 체크 가능
datarow < 10
: dataRow가 10 이하인 행만 체크 가능
(datarow < 10) and (state = 'c')
: dataRow가 10 미만이고 새로 추가된 행만 체크 가능
이러한 수식들을 checkBar.checkableExpression 에 설정 후 gridView.applyCheckable() 사용하여 그리드에 적용시킬 수 있습니다.
gridView.setCheckableExpression()을 사용하여 설정과 적용을 한번에 적용할 수도 있습니다.
적용된 체커블 상태의 초기화는 gridView.resetCheckables()을 사용합니다.
//수식만 설정
gridView.checkBar.checkableExpression = "values['Gender'] = '남'";
//설정된 수식을 실제로 적용
gridView.applyCheckables();
//수식의 설정과 적용을 동시에
gridView.setCheckableExpression("row < 5", true);
//적용된 수식을 제거
gridView.resetCheckables();
선택된 행 값 가져오기
//반환되는 값은 dataRow
var rows = gridView.getCheckedRows(true);
alert(rows);
//반환되는 값은 itemIndex
var items = gridView.getCheckedItems();
alert(items);
체크바 병합
체크바에 병합할 조건의 필드를 조건으로 추가해서 조건에 따라 체크바 영역을 병합시킬 수 있습니다.
gridView.checkBar.mergeRule = "value['Gender']"
체크, 텍스트 동시사용
체크바 헤더에 체크박스와 텍스트를 동시에 보여지도록 설정할 수 있습니다. checkLocation 속성으로 체크박스의 위치를 지정합니다.
gridView.setCheckBar({headText: "선택", checkLocation: "bottom", width: 50});
조건에 따라 특정행 체크바 숨김처리 하는 방법1
특정 조건에 따라 특정 행의 체크바가 보이지 않도록 설정하는 상황이 생길 수 있습니다.
특정 행의 체크바가 보이지 않도록 설정하고 체크도 되지 않도록 설정하는 상황에는 checkableExpression 또는 checkableCallback을 통해 비활성화 시킨 체크바를 숨기는 방식으로 구현 하실 수 있습니다.
다음은 나이가 60세 미만일 경우 체크박스를 숨김처리한 예제입니다.
// js
const f = function (dataSource, item) {
if (gridView.getValue(item.itemIndex, "Age") < 60) {
return false;
}
return true;
};
gridView.setCheckBar({ checkableCallback: f });
gridView.onDataLoadComplated = (grid) => {
gridView.applyCheckables();
};
// css
.rg-checkbar-disabled>div {
display:none
}
조건에 따라 특정행 체크바 숨김처리 하는 방법2
체크바 전체체크 시 체크는 되지만 단순히 보이지 않도록 설정해야하는 상황인 경우에는 아래와 같이 동적 스타일을 통해 숨김처리 하실 수 있습니다.
다음은 성별 컬럼의 값이 "여"인 경우 체크박스를 숨김처리한 예제입니다.
// js
var checkboxVisible = function (grid, type, index) {
if (grid.getValue(index, "Gender") === "여") {
return "checkbox-dn"; // 스타일 클래스
}
};
gridView.setCheckBar({ cellStyleCallback: checkboxVisible });
// css
.checkbox-dn input[type="checkbox"] {
display: none !important;
}