칼럼별로 정렬 수행시 데이터 비교를 위해 호출될 함수 이름을 지정한다.
Parameters | Type | Description |
---|---|---|
nSubRow | short | 서브로우 인덱스 |
nColumn | short | 열 인덱스 |
strSortFuncName | STRING | 정렬시 호출될 함수 이름 |
Type | Description |
---|---|
BOOL | 정상 처리 여부 |
지정된 함수를 취소할 경우에는, strSortFuncName 파라미터 값을 공백 문자열로 지정한다.
함수 이름에 해당하는 파라미터에 글로벌 모듈의 함수 이름을 지정하기 위해서는 "글로벌모듈이름.함수이름" 형식으로 지정한다.
function btn_setcolumnsoftfunc_on_mouseup(objInst)
{
// 0번째 서브로우 0번째 칼럼에 대한 정렬 함수 지정
grdList.setcolumnsortfunc(0, 0, "GridSortFunc");
}
/**
* 그리드 사용자 정의 정렬 함수, 관련 함수(setcolumnsortfunc, getcolumnsortfunc)
* @param objInst 그리드 오브젝트
* @param nSubRow 그리드 서브로우 인덱스 (Zero-Based)
* @param nColumn 그리드 칼럼 인덱스 (Zero-Based)
* @param nSortOrder 정렬 순서 (XFD_GRID_SORT_ASC(1), XFD_GRID_SORT_DES(2))
* @param nDataType 그리드 데이터 형식
* (XFD_GRID_DATA_NUMERIC(0), XFD_GRID_DATA_ALPANUM(1), XFD_GRID_DATA_HANGUL(2)
* @param strValueA 비교 대상 값 A
* @param strValueB 비교 대상 값 B
* @return 정렬 순서가 XFD_GRID_SORT_ASC인 경우, 아래의 기준에 따름,
0: strValueA와 strValueB 값이 같은 경우,
1: strValueA와 strValueB 보다 값이 큰 경우
-1: strValueA와 strValueB 보다 값이 작은 경우
정렬 순서가 XFD_GRID_SORT_DES인 경우, XFD_GRID_SORT_ASC와 반대 값
*/
function GridSortFunc(objInst, nSubRow, nColumn, nSortOrder, nDataType, strValueA, strValueB)
{
var nValue1, nValueB;
factory.consoleprint("GridSortFunc> nColumn = " + nColumn);
factory.consoleprint("nSortOrder = " + nSortOrder + ", nDataType = " + nDataType);
factory.consoleprint("GridSortFunc> strValueA = " + strValueA + ", strValueB = " + strValueB);
if (nDataType == XFD_GRID_DATA_NUMERIC) {
nValueA = parseFloat(strValueA);
nValueB = parseFloat(strValueB);
if (nSortOrder == XFD_GRID_SORT_ASC) { return nValueA - nValueB; }
else if (nSortOrder == XFD_GRID_SORT_DES) { return nValueB - nValueA; }
else { return 0; }
}
else {
if (strValueA == strValueB) { return 0; }
if (nSortOrder == XFD_GRID_SORT_ASC) { return strValueA > strValueB ? 1 : -1; }
else if (nSortOrder == XFD_GRID_SORT_DES) { return strValueA > strValueB ? -1 : 1; }
else { return 0; }
}
return 0;
}