RealGrid2 가이드
그리드 구성요소
체크바

체크바

체크바(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;
}