중요 업데이트 알림사용해보기제품구매도움영상문의
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에 여러줄로 표시하기
      • 행 삭제와 관계된 팁

행 그룹

Row grouping은 데이터 행들을 하나 이상의 지정한 컬럼의 값을 기준으로 구분시켜 계층적인 구조로 표시합니다. 컬럼 헤더를 panel 영역으로 드래깅하면 그 컬럼으로 grouping 합니다. 또는 GridView.groupBy() 함수를 호출해서 grouping할 수도 있습니다.

그룹핑 하기

컬럼 헤더를 panel 영역으로 드래깅하면 그 컬럼으로 grouping 합니다.
또는 GridView.groupBy() 함수를 호출해서 grouping할 수도 있습니다.

gridView.groupPanel.visible = false;

gridView.groupPanel.visible = true;

gridView.groupBy(["Gender", "Monetary"]);

그룹 헤더 및 풋터의 표시

rowGrouping 상태일 때 그룹의 펼침 또는 접힘 상태에 따라 그룹푸터와 그룹헤더의 표시방법을 설정 할 수 있습니다.

  • expandedAdornments: Row group이 펼쳐진 상태일 때, 그룹 header, footer의 표시 여부를 지정합니다.
  • collapsedAdornments: Row group이 펼쳐지지 않은 상태일 때, 그룹 header, footer의 표시 여부를 지정합니다.
gridView.setRowGroup({
  expandedAdornments: $(':radio[name="expanded"]:checked').val()
  collapsedAdornments: $(':radio[name="collapsed"]:checked').val()
});

그룹핑 이벤트

Row grouping되면 Javascript 그리드의 onGrouping, onGrouped 이벤트가 발생됩니다.

  • onGrouping
  • onGrouped
gridView.onGrouping = function(grid) {
  alert("onGrouping 이벤트가 발생했습니다. true를 반환합니다. false를 반환하면 그룹핑되지 않습니다.");
  return true;
};

gridView.onGrouped = function(grid) {
  alert(
    "onGrouped : isGrouped = " +
      grid.isGrouped() +
      ", isMergedGrouped  = " +
      grid.isMergedGrouped()
  );
};

푸터와 그룹 푸터에 요약값 표시

dataType이 "number"인 경우 요약값을 표시할 수 있습니다. 표시할 수 있는 요약값은 SummaryType에서 확인하세요.

아래 데모는 나이 컬럼은 평균값, 만기금액은 합계로 계산하였습니다.

var columns = [
  ...
  {
    name: "Age",
    fieldName: "Age",
    width: "40",
    header: {
      text: "나이"
    },
    groupFooter: {
      expression: "avg",
      numberFormat: "#,##0.0",
      styleName: "right-column"
    },
    footer: {
      expression: "avg",
      numberFormat: "#,##0.0",
      styleName: "right-column"
    },
    styleName: "right-column"
  },
  {
    name: "SaveMaturity",
    fieldName: "SaveMaturity",
    width: "80",
    numberFormat: "#,##0",
    header: {
      text: "만기금액"
    },
    groupFooter: {
      expression: "sum",
      numberFormat: "#,##0",
      styleName: "right-column"
    },
    footer: {
      expression: "sum",
      numberFormat: "#,##0",
      styleName: "right-column"
    },
    styleName: "right-column"
  },
  ...
];

gridView.setColumns(columns);

Group Footer의 동적계산

Group Footer에 표시되는 요약을 개발자가 계산하여 표시하고 싶은 경우는 column.groupFooter.valueCallback에 설정합니다.
(표시하고 싶은 값을 return 하여 처리합니다.)

4번째 인자인 group에 해당 group에 대한 정보들이 들어 있습니다. (ex: children에 해당 그룹의 자식들의 정보가 들어 있습니다.)

var columns = [
  ...
  {
    name: "Age",
    fieldName: "Age",
    width: "40",
    header: {
      text: "나이",
      styleName: "orange-column"
    },
    groupFooter: {
      valueCallback: function (grid, column, groupFooterIndex, group, value) {
        //계산 후 표시하고 싶은 값을 return
        var groupModel = grid.getGroupModel(group.index);
        return grid.getGroupSummary(groupModel, "Age").count + ' 건';
      },
      styleName: "right-column"
    },
    styleName: "right-column"
  },
  ...
];

gridView.setColumns(columns);

Group Footer를 여러 줄로 표시

Group Footer를 두 줄로 표시하기 위해서는 rowGroup.setFooters([{},{}])로 설정하시면 됩니다.
세 줄로 표시하기 위해서는 [{},{},{}] 로 설정하시면 됩니다.

개별 설정 코드들은 column.groupFooters에서 처리하면 됩니다.

아래 데모는 첫번째 그룹풋터에는 sum을 두번째 그룹풋터에는 avg를 표시한 데모 입니다.

gridView.rowGroup.setFooters([{},{}])

var vc = function (grid, column, groupFooterIndex, group, value) {
  var groupModel = grid.getGroupModel(group.index);
  
  //첫번째 그룹풋터에는 sum을, 두번째 그룹풋터에는 avg를 표시
  if (groupFooterIndex == 0) {
    return grid.getGroupSummary(groupModel, "Age").sum;
  } else if (groupFooterIndex == 1) {
    return grid.getGroupSummary(groupModel, "Age").avg;
  } 
};

var columns = [
  ...
    {
    name: "Gender",
    fieldName: "Gender",
    width: "50",
    header: {
      text: "성별",
      styleName: "orange-column"
    },
    groupFooters: [{
      text: "합계 : ",
      styleName: "orange-column"
    }, {
      text: "평균 : ",
      styleName: "orange-column"
    }],
  },
  {
    name: "Age",
    fieldName: "Age",
    width: "40",
    header: {
      text: "나이",
      styleName: "orange-column"
    },
    groupFooters: [{
      valueCallback: vc,
      numberFormat: "#,##0.#",
      styleName: "orange-column"
    }, {
      valueCallback: vc,
      numberFormat: "#,##0.#",
      styleName: "orange-column"
    }],
    styleName: "right-column"
  },
  ...
];

gridView.setColumns(columns);

그룹 푸터 값 표시

아래 옵션들의 설정에 따라 각 행 그룹들은 그룹 푸터를 표시할 수 있습니다.
그룹 푸터에 표시하는 텍스트는 GridBase.setRowGroup 함수에 전달되는 설정 개체의 footerStatement 값으로 지정합니다.
또한, summary mode를 통해 각 행 그룹의 푸터에 표시할 수 있는 값의 종류를 지정할 수도 있습니다.

gridView.setRowGroup({
  footerStatement: "${groupValue}"
});

그룹 헤더 값 표시

아래 옵션들의 설정에 따라 각 행 그룹들은 그룹 헤더를 표시할 수 있습니다.
그룹 헤더에 표시하는 텍스트는 GridBase.setRowGroup 함수에 전달되는 설정 개체의 headerStatement 값으로 지정합니다.
headerStatement의 기본값은 "${groupField}: ${groupValue} - ${rowCount} rows" 입니다.

headerStatement 속성으로는 아래와 같은 값들을 설정할 수 있습니다.

  • groupField: 그룹핑된 필드의 필드명을 표시합니다.
  • fieldHeader: 그룹핑된 필드에 설정한 헤더를 표시합니다.
  • groupColumn: 그룹핑된 컬럼의 헤더를 표시합니다.
  • columnHeader: 그룹핑된 컬럼의 헤더를 표시합니다.
  • columnFooter: 그룹핑된 컬럼의 푸터값을 표시합니다.
  • groupValue: 각 그룹별 value를 표시합니다.
  • rowCount: 각 그룹별 행 수를 표시합니다.
gridView.setRowGroup({
  headerStatement: "${groupField}: ${groupValue} - ${rowCount} rows"
});

rowGroup.Bar 표시여부 설정

rowGroup.indentVisible 설정으로 rowGroup.Bar 영역 표시여부를 설정할 수 있습니다. indentVisible이 false이면 expand 아이콘이 사라지기 때문에 접고 펼칠 수 없습니다.

gridView.rowGroup.indentVisible = false;

날짜 기준 행 그룹핑

행 그룹의 valueForGroupCallback 속성을 사용해서 날짜의 특정 단위기준으로 행 그룹핑을 적용할 수 있습니다.
※ 행 병합 그룹핑(mergeMode: true) 에서는 적용할 수 없습니다.

gridView.rowGroup.valueForGroupCallback = function(grid, dataRow, fieldName, value) {

    if (grid.getDataSource().getOrgFieldName(dataProvider.getFieldIndex(fieldName)) === "StartDate" && value) {
        return new Date(2000, value.getMonth());
    }
    return value;
  }

  gridView.columnByName("StartDate").groupFooter.valueCallback = function(grid, column, footerIndex, group) { 
    var row = group.firstDataItem.dataRow; 
    var val = grid.getDataSource().getValue(row, column.fieldName); 
    return val.getFullYear() + " - " + (val.getMonth()+1) + " 계"
  };

  // 추가적인 것들
  gridView.rowGroup.indentVisible = false;
  gridView.rowGroup.expandedAdornments = "footer";