====== 그리드 소계행 가이드 ======
그리드 컴포넌트 소계행에 대한 기본 기능 예시 화면이다.
소계행은 그리드 내부 데이터를 기준으로 그리드 컴포넌트에서 자동으로 통계 데이터를 계산하여 표시하는 기능을 제공한다.
관련 속성으로 mid_statistics, midstatistics_show, midstatistics_type, base_midstatistics가 있다.
관련 API로 getmidstatrowcount, ismidstatrow, getstatmidrowfirst, getstatmidrownext, getcolumnmidstatshow, setcolumnmidstatshow가 있다.
소계 데이터 계산 방식은 midstatistics_show 속성의 통계 유형(operation 속성)을 기준으로 계산된다.
소계 정보는 멀티로 지정이 가능하며, 각 소계행은 소계 데이터가 계산된 기준 소계 정보 인덱스 정보를 가지고 있다.
===== 예시 =====
템플릿 위치: /HTML5/COMPONENT/GRID/grid_midstat_basic
템플릿 파일
* [[xf5projecthome>template/screen/HTML5/COMPONENT/GRID/grid_midstat_basic.xml|grid_midstat_basic.xml]]
* [[xf5projecthome>template/screen/HTML5/COMPONENT/GRID/grid_midstat_basic.js|grid_midstat_basic.js]]
* [[xf5projecthome>template/template.html?xframe_screen_url=/HTML5/COMPONENT/GRID/grid_midstat_basic|새창으로 실행]]
echo '';
echo '';
echo '';
==== 화면 스크립트 ====
// "getitemtext" 버튼 이벤트
function btn_getitemtext_on_mouseup(objInst)
{
var row_count, row_index, column_count, column_index, row_data_arr, column_data_arr;
row_count = grdList.getrowcount();
column_count = grdList.getcolumncount();
row_data_arr = [];
// 그리드 행 Loop
for (row_index = 0; row_index < row_count; row_index++) {
// 소계행 여부인지 비교
if (!grdList.ismidstatrow(row_index)) { continue; }
column_data_arr = [];
for (column_index = 0; column_index < column_count; column_index++) {
column_data_arr.push(grdList.getitemtext(row_index, column_index));
}
// 배열에 있는 데이터를 콤마를 구분하여 붙여서 배열에 추가
row_data_arr.push(row_index + "행 데이터: " + column_data_arr.join(","));
}
// 소계행 데이터 정보 표시
screen.alert(row_data_arr.join("\n"));
}
// "ismidstatrow" 버튼 이벤트
function btn_ismidstatrow_on_click(objInst)
{
var row_index, is_midstat_row, midstat_info_index;
row_index = fld_rowindex.gettext();
is_midstat_row = grdList.ismidstatrow(fld_rowindex.gettext());
if (is_midstat_row) {
screen.alert(row_index + "행은 소계행입니다.");
}
else {
screen.alert(row_index + "행은 소계행이 아닙니다.");
}
}
// "getstatmidrowfirst" 버튼 이벤트
function btn_getstatmidrowfirst_on_click(objInst)
{
var midstat_row_index, column_count, column_index, row_data_arr, column_data_arr;
column_count = grdList.getcolumncount();
row_data_arr = [];
// 0번째 소계 정보에 대한 첫번재 소계행 인덱스를 구함
midstat_row_index = grdList.getstatmidrowfirst(0);
while (-1 < midstat_row_index) {
column_data_arr = [];
for (column_index = 0; column_index < column_count; column_index++) {
column_data_arr.push(grdList.getitemtext(midstat_row_index, column_index));
}
// 배열에 있는 데이터를 콤마를 구분하여 붙여서 배열에 추가
row_data_arr.push(midstat_row_index + "행 데이터: " + column_data_arr.join(","));
// 0번째 소계 정보에 대한 다음 소계행 인덱스를 구함
midstat_row_index = grdList.getstatmidrownext(0);
}
// 소계행 데이터 정보 표시
screen.alert(row_data_arr.join("\n"));
}
// "getmidstatrowcount" 버튼 이벤트
function btn_getmidstatrowcount_on_click(objInst)
{
screen.alert("소계행 수 = " + grdList.getmidstatrowcount());
}
// "setcolumnmidstatshow" 버튼 이벤트
function btn_setcolumnmidstatshow_on_click(objInst)
{
var midstatistics_show;
// 그리드 2번째 컬럼 데이터부 midstatistics_show 속성 토글 처리
midstatistics_show = grdList.getcolumnmidstatshow(2);
// statistics_show 값 토글 처리를 그리드에 설정
midstatistics_show = !midstatistics_show;
grdList.setcolumnmidstatshow(2, midstatistics_show, true);
// statistics_show 값을 기준으로 헤더부 텍스트 변경
if (midstatistics_show) {
grdList.setheadertext(0, 2, "소계 포함 (midstatistics_show - true)");
}
else {
grdList.setheadertext(0, 2, "소계 제외 (midstatistics_show - false)");
}
}