RealGrid2 가이드
헤더와 푸터
상단 요약 표시

상단 요약 표시(Header Summary)

그리드의 끝에 위치한 footer와 함께 각 컬럼의 합계 및 통계에 대한 값을 그리드 시작 위치에 표시 합니다. gridView.headerSummaries.visible = true로 설정하면 footer와 같은 기능을 가진 bar가 시작 위치에 표시되는 것을 확인 할 수 있습니다.

Column Header Summary

상단에 표시되는 요약을 설정하는 방법은 column.headerSummary 속성에 설정합니다. footer에 요약하는 설정 방법과 동일합니다.

function btnShowHeaderSummary() {
  gridView.headerSummaries.visible = true;
}
 
function btnHideHeaderSummary() {
  gridView.headerSummaries.visible = false;
}
var columns = [{
    ...
}, {
  "name": "QuantityPerUnit",
  "fieldName": "QuantityPerUnit",
  "width": "100",
  "header": {
      "text": "Quantity / Unit"
  },  
  "headerSummary": {
    "text": "합계: "
  }
}, {
  "name": "Quantity",
  "fieldName": "Quantity",
  "width": "100",
  "header": {
      "text": "Quantity"
  },
  "headerSummary": {
    "expression": "sum",
    "numberFormat": "#,##0"
  },
  "footer": {
      "expression": "sum",
      "numberFormat": "#,##0"
  }
}, {
    ...
}];

Column Header Summary의 동적 계산

상단에 표시되는 요약을 개발자가 계산하여 표시하고 싶은 경우는 column.headerSummary.valueCallback에 설정합니다. OrderID컬럼은 데이터행수/2, Quantity컬럼은 체크한 행들의 합계를 표시합니다. (표시하고 싶은 값을 return 하여 처리합니다.)

var columns = [{
    ...
}, {
  "name": "OrderID",
  "fieldName": "OrderID",
  "width": "80",
  "header": {
      "text": "Order ID"
  },
  "headerSummary": {
    valueCallback: function (grid, column, childIndex, summary, value) {
      //표시하고 싶은 값을 return
      return grid.getSummary("OrderID", "count") / 2;
    }
  }
}, {
    ...
}, {
  "name": "Quantity",
  "fieldName": "Quantity",
  "width": "100",
  "header": {
      "text": "Quantity",
      "styleName": "orange-column"
  },
  "headerSummary": {
    "numberFormat": "#,##0.#",
    valueCallback: function (grid, column, childIndex, summary, value) {
      var prod = grid.getDataSource();
      var checkedRows = grid.getCheckedRows();
      var sum = 0;
 
      checkedRows.forEach(function(e) {
        sum += prod.getValue(e, column.fieldName);
      });
 
      return sum;
    }
  },
  "footer": {
      "expression": "sum",
      "numberFormat": "#,##0"
  }
}, {
    ...
}];

Header Summary 여러 행 표시

상단 요약을 여러 행으로 표시할 수 있습니다.

  • options
gridView.setHeaderSummaries({
  visible:true,
  items:[
    {
      //styleName: "blue-column",   개별 css 스타일 적용 필요시
      height: 40
    }, 
    {
      height: 40
    }
  ]
});
  • columns
var columns = [{
    ...
}, {
  "name": "QuantityPerUnit",
  "fieldName": "QuantityPerUnit",
  "width": "100",
  "header": {
      "text": "Quantity / Unit"
  },
  "summaries": [{
    "text": "합계 ==>  ",
  }, {
    "text": "평균 ==>  ",
  }]
}, {
  "name": "Quantity",
  "fieldName": "Quantity",
  "width": "100",
  "header": {
      "text": "Quantity"
  },
  "summaries": [{
    "expression": "sum",
    "numberFormat": "#,##0.00"
  }, {
    "expression": "avg",
    "numberFormat": "#,##0.00"
  }]
}, {
    ...
}];

여러 Header Summary 행의 개별 행 colSpan

여러 행으로 구성된 Header Summary를 각 행마다 colSpan 할 수 있습니다. 이 경우 레이아웃을 사용하여야 하며 colSpan된 셀의 text는 첫번째 컬럼(Country 컬럼)에 설정합니다.

gridView.setHeaderSummaries({
  visible:true,
  items:[
    {
      //styleName: "blue-column",   개별 css 스타일 적용 필요시
      height: 40
    }, 
    {
      height: 40
    }
  ]
});
  • columns
var columns = [{
  "name": "Country",
  "fieldName": "Country",
  "width": "100",
  "header": {
    "text": "Country"
  }
  "summaries": [{
    "text": "합계 ==>  ",
  }, {
    "text": "평균 ==>  ",
  }]
}, {
  ...
}, {
  "name": "Quantity",
  "fieldName": "Quantity",
  "width": "100",
  "header": {
      "text": "Quantity"
  },
  "summaries": [{
    "expression": "sum",
    "numberFormat": "#,##0.00"
  }, {
    "expression": "avg",
    "numberFormat": "#,##0.00"
  }]
}, {
    ...
}];
  • layout

방법 1.

gridView.layoutByColumn("Country").summaryUserSpans = [{ colspan: 3 }, { colspan: 3}];

방법 2.

var layout1 = [
  {
    column: "Country",
    summaryUserSpans: [{ colspan: 3 }, { colspan: 3}]
  },
  "CompanyName",
  "QuantityPerUnit", 
  "Quantity",
  "OrderID",
  "CustomerID",
  "EmployeeID",
  "OrderDate",
  "Phone",
  "ProductName"
];
 
gridView.setColumnLayout(layout1);

여러 Header Summary 행의 rowSpan, colSpan

여러 행으로 구성된 Header Summary를 rowSpan, colSpan 할 수 있습니다. 이 경우 레이아웃을 사용하여야 하며 span된 셀의 text는 첫번째 컬럼(Country 컬럼)에 설정합니다.

gridView.setHeaderSummaries({
  visible:true,
  items:[
    {
      //styleName: "blue-column",   개별 css 스타일 적용 필요시
      height: 40
    }, 
    {
      height: 40
    }
  ]
});
  • columns
var columns = [{
  "name": "Country",
  "fieldName": "Country",
  "width": "100",
  "header": {
    "text": "Country"
  },
  "summaries": [{
    "text": "합계/평균 ==>"
  }]
}, {
  ...
}, {
  "name": "Quantity",
  "fieldName": "Quantity",
  "width": "100",
  "header": {
      "text": "Quantity"
  },
  "summaries": [{
    "expression": "sum",
    "numberFormat": "#,##0.00"
  }, {
    "expression": "avg",
    "numberFormat": "#,##0.00"
  }]
}, {
    ...
}];
  • layout

방법 1.

gridView.layoutByColumn("Country").summaryUserSpans = [{ rowspan: 2, colspan: 3 }];

방법 2.

var layout1 = [
  {
    column: "Country",
    summaryUserSpans: [{ rowspan: 2, colspan: 3 }]
  },
  "CompanyName",
  "QuantityPerUnit", 
  "Quantity",
  "OrderID",
  "CustomerID",
  "EmployeeID",
  "OrderDate",
  "Phone",
  "ProductName"
];
 
gridView.setColumnLayout(layout1);