중요 업데이트 알림사용해보기제품구매도움영상문의
RealGrid2v2.6.2

  • 튜토리얼
      • 인디케이터
      • 상태바
      • 체크바
      • 체크바와 데이터 필드의 연동
      • 컨텍스트 메뉴
      • 토스트 메시지 창
      • 커서
      • 열 고정하기
      • 행 고정하기
      • 선택
      • 다중 선택
      • 같은 값의 셀 생략하기
      • 셀 버튼
      • 팝업 메뉴 버튼
      • 셀 병합
      • Lookup 컬럼
      • Lookup 트리
      • 툴팁
      • 그룹헤더 툴팁
      • 화면 표시값 변경하기
      • Place Holder
      • 컬럼 만들기
      • 컬럼 속성 동적 변경하기(visible, editable)
      • 컬럼 너비 자동 조정
      • 데이터 정렬
      • 컬럼 이동
      • 자동 필터링
      • 데이터 필터링
      • 컬럼 레이아웃(컬럼 그룹)
      • 컬럼 레이아웃(컬럼 그룹) 속성 동적 변경하기
      • 컬럼 너비 조절
      • 그룹컬럼 접기
      • 셀 가로병합
      • 레이아웃(추가, 삭제)
      • 라인 편집기
      • 멀티라인 편집기
      • 숫자 편집기
      • 드롭다운 편집기
      • 날짜 편집기
      • 마스크 편집기
      • 입력제한 편집기
      • 행 추가/삽입
      • 행 삭제
      • 행 데이터 수정
      • 행/셀 데이터 가져오기
      • 셀 데이터 수정
      • 헤더 높이
      • 헤더 체크박스 사용
      • 컬럼 푸터
      • 컬럼 푸터 병합
      • 상단 요약 표시
      • 컬럼 헤더 HTML Template
      • 컬럼 레이아웃(그룹 컬럼) 헤더 HTML Template
      • 행 높이
      • 행 그룹핑
      • 그룹핑 API
      • 행 병합 그룹핑
      • 아이템 모델
      • 그리드 동적 높이
      • JSON 데이터 가져오기
      • XML 데이터 가져오기
      • 그리드 Lazy Loading 구현
      • 마스터 디테일 예
      • provider 공유하기
      • 데이터 타입
      • 불린 타입 필드
      • 날짜 타입 필드
      • Object 타입 필드
      • Subtypes
      • 롤백
      • 검색
      • 계산 필드
      • 그리드에서 페이징 처리 1
      • 그리드에서 페이징 처리 2
      • 행 Drag & Drop
      • Grid To Grid
      • 텍스트 렌더러
      • 체크 렌더러
      • 바 렌더러
      • 이미지 렌더러
      • 아이콘 렌더러
      • 도형 렌더러
      • 시그널 렌더러
      • 링크 렌더러
      • HTML 렌더러
      • 바코드 렌더러
      • 커스텀 렌더러 - 이미지버튼
      • 구글차트 연동
      • 하이차트 연동
      • 시리즈 컬럼
      • 스파크 컬럼
      • 행 상태
      • Undo / Redo
      • 복사하기/붙여넣기
      • 병합 일괄 수정
      • RealGrid2 스타일
      • 사용자 스타일 - 개요
      • 바디 영역 스타일
      • 헤더, 풋터, 상태바 스타일
      • 셀, 데이터 영역 스타일
      • 편집 영역 스타일
      • styleName 속성 및 콜백
      • 컬럼 동적 스타일
      • 행 동적 스타일
      • 셀 동적 스타일
      • RealGrid2 테마
      • 포커스 스타일
      • 엑셀 내보내기
      • 행 그룹된 그리드 내보내기
      • 여러 레이아웃으로 구성된 그리드 내보내기
      • 다중 그리드 Excel 내보내기
      • Excel문서에 제목 추가하기
      • 엑셀 스타일
      • 이미지 엑셀 내보내기
      • 사용자 지정 문자 출력
      • 엑셀 시트 보호
      • Mobile FormView
      • 대량 데이터 불러오기
      • 트리뷰
      • 트리 구현 - Array데이터
      • 트리 구현 - Object데이터
      • 트리 구현 - Xml데이터
      • 트리 노드 조작하기
      • 트리 아이콘 1
      • 트리 아이콘 2
      • 트리 이벤트
      • 트리 Lazy Loading
      • 트리 노드 정보
      • 사용자 지정 컬럼 유효성 검사
      • 사용자 지정 행 유효성 검사
      • 전체 유효성 검사
      • 유효성 검사 통과
      • 이벤트 발생 순서
      • 클릭 이벤트
      • 렌더링 완료 이벤트
      • 하이차트 연동 컬럼 선택
      • 하이차트 연동 컬럼 필터링
      • 하이차트 연동 행 선택
      • amchart 연동 체크 선택
      • amchart 연동 행 선택
      • 추천 설정
      • 필드와 컬럼 일괄 생성
      • SPAN(컬럼그룹)
      • 행 상태에 따른 특정 컬럼 편집 제어
      • CheckBar에서 자식 노드 연동하여 체크하기
      • Excel Import
      • Group Footer 표시여부 조작하기
      • 체크바와 관계된 팁
      • 상태바와 관계된 팁
      • 동적 에디터 변경
      • text타입 날짜 편집기
      • ColorPicker 연결
      • 파일 Drag and Drop
      • 셀 병합에서 텍스트를 상단으로 이동
      • 병합된 셀의 합계 계산
      • HEADER와 FOOTER에 여러줄로 표시하기
      • 행 삭제와 관계된 팁

아이템 모델

그리드 아이템(Item)은 DataProvider의 한 행이나, RowGrouping된 그룹의 헤더나 푸터 등이 그리드나 트리에서 한 라인으로 표시되는 표시 모델입니다.

아이템 모델

각 아이템은 표시되는 순서대로 index 값을 갖게 되는데, 리얼그리드 대부분의 함수들은 이 index 값을 전달하여 실행됩니다.
하지만, 표시되지 않는 아이템들 예를 들어, 감춰진 RowGroup의 아이템들이나 감춰진 Tree 아이템들은 이 index를 통해 접근할 수 없습니다.
이런 경우 등을 위해 그리드 내부의 아이템 모델 정보를 리턴하고 그 정보로 다른 모델 정보를 얻어올 수 있는 함수들을 제공합니다.

아이템 모델의 종류와 리턴

아이템 모델의 종류는 아래와 같습니다.

var ItemType = {
  ROW: "row", // 데이터 행
  GROUP: "group", // 그룹 (그룹 Header로 표시됩니다)
  FOOTER: "footer", // 그룹 Footer
  TREE: "tree" // 트리 노드 ("group" 이기도 합니다)
};

아이템 모델 정보는 아래와 같은 형태로 리턴 됩니다.

{
    type: "row",        // ItemType
    itemIndex: 0,       // 아이템 index
    dataRow: -1,        // 아이템에 연결된 데이터행. type이 "row"가 아니면 -1
    checked: false,     // 아이템 checked 여부
    id: 0,              // 내부 사용 아이디,
    parentId: 0,        // 내부 사용 아이디,
    footerId: 0,        // 내부 사용 아이디
};

모델관련 API호출시 extended를 true로 지정시 반환되는 확장 모델정보에 다음과 같은 정보가 추가됩니다.

level: 2,        // 계층 구조상 Level, 1부터 시작
childIndex: 0,   // 부모 모델내의 순서

아이템 모델 가져오기

getModel()함수는 아이템 index에 해당하는 아이템모델을 리턴 합니다.

var extended = $("#chkExtendedModel").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var item = gridView.getModel(itemIndex, extended);
alert(JSON.stringify(item));

getParentModel()함수는 아이템 모델의 부모 아이템 모델을 리턴 합니다.

var extended = $("#chkExtendedModel").is(":checked");
var idx = gridView.getCurrent();
var item = gridView.getModel(idx.itemIndex);
var parent = gridView.getParentModel(item, extended);
alert(JSON.stringify(item));
if (parent) {
  idx.itemIndex = parent.itemIndex;
  gridView.setCurrent(idx);
}

getRootModel()함수는 아이템 모델의 최상위 조상 아이템 모델을 리턴 합니다.

var extended = $("#chkExtendedModel").is(":checked");
var idx = gridView.getCurrent();
var item = gridView.getModel(idx.itemIndex);
var root = gridView.getRootModel(item, extended);
console.log(JSON.stringify(root));
alert(JSON.stringify(root));
if (root) {
  idx.itemIndex = root.itemIndex;
  gridView.setCurrent(idx);
}

getChildModels()함수는 아이템 모델의 바로 아래 자식 아이템 모델들을 리턴 합니다.

var extended = $("#chkExtendedModel").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var item = gridView.getModel(itemIndex);
if (item) {
  var children = gridView.getChildModels(item, extended);
  alert(JSON.stringify(children));
}

getChildModel()함수는 아이템 모델의 자식 아이템 모델을 리턴 합니다.

var extended = $("#chkExtendedModel").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var group = gridView.getModelAs(itemIndex, "group");
if (group && group.count > 0) {
  var item = gridView.getChildModel(group, 0, extended);
  alert(JSON.stringify(item));
}

getModels()함수는 지정한 아이템 index들에 해당하는 아이템 모델들을 배열로 리턴 합니다.

var extended = $("#chkExtendedModel").is(":checked");
var items = gridView.getModels([0, 1, 2], extended);
var s = JSON.stringify(items);
alert(JSON.stringify(s));

getModelOfRow()함수는 지정한 데이터 행에 해당하는 아이템 모델을 리턴 합니다.

var extended = $("#chkExtendedModel").is(":checked");
var row = gridView.getCurrent().dataRow;
var item = gridView.getModelOfRow(row, extended);
alert(JSON.stringify(item));

getModelsOfRows()함수는 지정한 데이터 행들에 해당하는 아이템 모델들을 배열로 리턴 합니다.

var extended = $("#chkExtendedModel").is(":checked");
var items = gridView.getModelsOfRows([0, 1, 2], extended);
var s = JSON.stringify(items);
alert(JSON.stringify(s));

getGroupSummary 지정한 그룹아이템 모델의 합계 정보를 리턴 합니다.

var idx = gridView.getCurrent();
var item = gridView.getModelAs(idx.itemIndex, "row");

if (item) {
  var group = gridView.getParentModel(item);

  if (group && idx.fieldIndex >= 0) {
    var summary = gridView.getGroupSummary(group, idx.fieldIndex);
    if (summary) {
      alert(JSON.stringify(summary));
    }
  }
}

지정한 그룹아이템 모델을 expand 합니다.

var recursive = $("#chkExpandRecursive").is(":checked");
var force = $("#chkExpandForce").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var group = gridView.getModelAs(itemIndex, "group");
if (group) {
  gridView.expandModel(group, recursive, force);
}

collapseModel 지정한 그룹아이템 모델을 collapse 합니다.

var recursive = $("#chkCollapseRecursive").is(":checked");
var itemIndex = gridView.getCurrent().itemIndex;
var group = gridView.getModelAs(itemIndex, "group");
if (group) {
  gridView.collapseModel(group, recursive);
}

주의

  • 대량의 아이템 모델을 리턴하는 함수는 메모리 사용이나 속도면에서 부담을 줄 수 있으므로, 아이템 index로 해결할 수 있는 경우라면 반드시 index 함수들을 사용해야 합니다.
    특히 확장모델정보는 저장된 값이 아니라 그때마다 계산하여 가져오는 방식이므로 더많은 부담을 줄 수 있습니다.
  • 함수들에서 리턴된 모델을 다른 함수의 매개변수로 전달하게 되므로 속성 값을 수정해서는 안됩니다.
    특히, 내부 사용 아이디들은 의미있는 값으로 사용해서도 안됩니다.
  • 데이터의 변경이나 혹은 Row Grouping이 새로 실행될 때, 혹은 다른 이유로 그리드나 트리의 아이템모델은 자주 갱신됩니다.
    대개의 경우 리턴된 아이템모델을 하나의 함수 밖에서 재사용하기 위해 저장하는 것은 의미가 없고 위험할 수 있습니다.