목차

grd_sort 가이드

soft_func 속성 및 setcolumnsoftfunc API에 대한 예시 화면이다.

soft_func 속성은 정렬 처리시 커스텀 정렬 비교 함수를 수행하기 위한 기능을 제공한다.

on_sortcomplete 이벤트는 정렬 완료시 발생하는 이벤트이다.

예시

setcolumnsoftfunc 함수 호출후, 그리드 헤더를 클릭해서 기능 확인

템플릿 위치: /HTML5/COMPONENT/GRID/grid_sort_func

템플릿 파일

화면 스크립트

/**
 * 그리드 사용자 정의 정렬 함수, 관련 함수(setcolumnsortfunc, getcolumnsortfunc)
 * @param objInst 그리드 오브젝트
 * @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, nColumn, nSortOrder, nDataType, strValueA, strValueB)
{
	var nValue1, nValueB;

	factory.consoleprint("GridSortFunc> nColumn = " + nColumn + ", 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; }
	}
}

// "getcolumnsortfunc" 버튼 이벤트
function btn_getcolumnsoftfunc_on_mouseup(objInst)
{
	// 0번째 칼럼에 지정된 정렬 함수 이름 출력
	factory.consoleprint("sortfunc = [" + this.grdList.getcolumnsortfunc(0) + "]");
}

// "setcolumnsoftfunc" 버튼 이벤트
function btn_setcolumnsoftfunc_on_mouseup(objInst)
{
	// 0번째 칼럼에 대한 정렬 함수 지정
	this.grdList.setcolumnsortfunc(0, this.fld_sortfunc.gettext());
}