칼럼 아이템 표시시 호출될 함수 이름 속성인 expr_func 속성값을 지정한다.
Parameters | Type | Description |
---|---|---|
nColumn | short | 열 인덱스(Zero-Based, -1 지정시 전체 컬럼) |
strFuncName | STRING | 함수 이름 |
strMidStatFuncName | STRING | 소계행 처리 함수 이름 |
strStatRowFuncName | STRING | 통계행 처리 함수 이름 |
bRefresh | BOOL | [옵션] 그리드 리프레쉬 여부(기본값 true) |
Type | Description |
---|---|
BOOL | 정상 처리 여부 |
함수의 리턴 오브젝트내 itemtext는 그리드에 표시하기 위한 용도로만 사용된다. setvalue를 지정하지 않은면, 그리드에 값이 저장되지 않기 때문에 getitemtext API를 통해서 구해지지 않는다.
strFuncName, strMidStatFuncName, strStatRowFuncName 파라미터 값을 공백 문자열로 지정시 기존에 지정된 함수를 취소한다.
strFuncName, strMidStatFuncName, strStatRowFuncName 파라미터 값을 null로 지정시, 기존에 지정된 함수를 변경하지 않는다.
함수 이름에 해당하는 파라미터에 글로벌 모듈의 함수 이름을 지정하기 위해서는 "글로벌모듈이름.함수이름" 형식으로 지정한다.
지정한 함수 내에서 setitem 관련 API 호출시 bRefresh 옵션 파라미터를 반드시 false로 지정해서 호출해야 한다.
bRefresh 값이 false인 경우, 변경된 내용을 표시하기 위해서는 refresh 함수를 호출해야 한다.
만약 많은 수의 칼럼에 대해서 루핑 돌면서 호출하는 경우라면, 해당 파라미터를 false로 주고, 루핑처리 끝난 이후에 그리드 refresh 함수를 호출하는 것이 속도면에서 훨씬 빠릅니다.
예시는 솔루션 설치 디렉토리 하위 템플릿 화면(template/HTML5/COMPONENT/GRID/grid_expr_func)을 참조한다.
function btn_on_mouseup(objInst)
{
// grid no refresh
grd.setcolumnexprfunc(0, "ExprFuncData", null, null, false);
// grid no refresh, global function
grd.setcolumnexprfunc(1, "SYSUtil.ExprFuncData", null, null, false);
// grid refresh
grd.setcolumnexprfunc(2, "ExprFuncData", null, null, true);
screen.alert("func name = " + grd.getcolumnexprfunc(2));
}
/**
* 데이터행 사용자 정의 표현 함수
* @param nRow 행 인덱스 (Zero-Based)
* @param nColumn 열 인덱스 (Zero-Based)
* @param strItemText 아이템 텍스트
* @param objGrid 그리드 오브젝트
* @param nFileType 파일 유형 (0: GRID, 1: CSV, 2: EXCEL, 3: TEXT, 4: XML, 5: JSON)
* @returns 오브젝트 또는 undefined
*/
function ExprFuncData(nRow, nColumn, strItemText, objGrid, nFileType)
{
// 반환값 오브젝트 정의
var retInfo = {
css : "", // css 문자열
itemtext: undefined, // 아이템 텍스트(setvalue 미지정시 값이 그리드에 저장되지 않음)
setvalue: undefined, // 값이 true인 경우, itemtext에 지정된 값으로 그리드에 저장
// 값이 문자열/숫자인 경우, setvalue에 지정된 값으로 그리드에 저장
formatted: false, // 패턴 처리 여부 (true로 설정된 경우, 칼럼 패턴이 적용되지 않음)
hidden: false, // 숨김 처리 여부 (true로 설정된 경우, 값이 표현되지 않음)
pattern_front_symbol: undefined, // 패턴 front symbol
pattern_rear_symbol: undefined // 패턴 rear symbol
};
// 주의 !!!
// 아이템 변경 처리 API 호출시에는 bRefresh 파라미터를 반드시 false로 지정해야 한다.
if (objGrid === undefined) {
// objGrid 파라미터가 undefined인 경우에는 솔루션 패치 이전 상태이며,
// expr_func, midstat_expr_func, statrow_expr_func 속성에
// 글로벌 모듈 함수로 지정할 수 없다.
factory.consoleprint("objGrid is undefined");
// objGrid 변수를 아래 라인처럼, 화면내 그리드 이름이 "grdList"인 경우에
// 화면내 실제 그리드 이름으로 지정하여 사용한다.
// objGiid = this.grdList;;
}
// 패턴 심볼 설정
if (nRow == 0 && nColumn == 2) {
// retInfo 값 지정 방식
// retInfo.pattern_front_symbol = "$";
// retInfo.pattern_rear_symbol = "%";
// API 호출 방식 (bRefresh 파라미터를 false로 지정)
if (objGrid) {
objGrid.setitempatternfrontsymbol(nRow, nColumn, "$", false);
objGrid.setitempatternrearsymbol(nRow, nColumn, "%", false);
}
}
// 전경색 및 배경색 변경
if (nRow == 1 && nColumn == 2) {
// retInfo 값 지정 방식
// retInfo.css = "color: rgb(255,255,255); background-color: rgb(0,0,255);";
// API 호출 방식 (bRefresh 파라미터를 false로 지정)
if (objGrid) {
objGrid.setitemforecolor(nRow, nColumn, factory.rgb(255,255,255), false);
objGrid.setitembackcolor(nRow, nColumn, factory.rgb(0,0,255), false);
}
}
// 데이터 변경 및 포맷팅 처리 값 지정
if (nRow == 2 && nColumn == 2) {
retInfo.itemtext = "DataRow(" + nRow + ":" + nColumn + ") " + strItemText;
retInfo.formatted = true;
}
// 숨김 지정
if (nRow == 3 && nColumn == 2) {
retInfo.hidden = true;
}
// return; // 값 없이 리턴시, 콜백 함수의 리턴값을 사용하지 않음
return retInfo;
}