SMART datagrid v1.4 > Examples

Back  Forward

Column Sorting  Example

컬럼 헤더를 클릭하거나 GridBase.orderBy 메쏘드를 호출해서 컬럼별로 정렬할 수 있는데, 사용자가 컬럼 헤더 클릭으로 정렬하기 위해서는 우선 GridBase.operateOptions에 정렬 가능하도록 설정돼야 한다. 메쏘드 호출을 통한 정렬은 속성과 상관없다. 

Code -1
    function (ev) {
        grdMain.operateOptions().setSortingEnabled(ev.target.value);
    }

그리드 수준에서 정렬 가능한 상태이더라도 DataColumn.sortable 속성을 통해 컬럼별로 사용자 정렬 가능 여부를 지정할 수도 있다. 아래 "Change Column Sortable" 버튼을 클릭하면 현재 선택된 컬럼의 정렬 여부를 번갈아 설정한다. 

Code -2
    function (ev) {
        var column = grdMain.focusedIndex().column;
        if (column instanceof DataLudi.DataColumn) {
            column.setSortable(!column.sortable());
            // soratable이 false가 되면 배경색을 다르게
            // styles는 다음 예제에서
            column.styles().setBackground(column.sortable() ? '#fff' : '#10000000');
        }
    }
Grid - 1
rows
Sort Style:
OperateOptions.SortHandleVisibility:
ColumnHeader.SortHandleVisibility:

실제 정렬은 컬럼 단위가 아니라 컬럼에 연결된 데이터필드를 기준으로 실행된다. 하나 이상의 필드에 대해 동시에 정렬을 진행할 수 있는데, 먼저 정렬된 필드 값들의 순서를 유지한 상태에서 추가되는 필드 값들이 정렬되게 된다. 

sortStyle 속성을 SortStyle.INCLUSIVE로 지정하면 복수 정렬을 할 수 있다. 위의 Sort Style 선택 박스에서 확인한다. 

Code -3
    function (ev) {
        grdMain.operateOptions().setSortStyle(ev.target.value);
    }

SortStyle.REVERSE는 나중에 클릭한 필드를 먼저 정렬하는 방식이다. 

OperateOptions.keepFocusedRowWhenSorttrue로 지정하면 정렬 후 포커스행 위치가 유지됨. 


소스보기 JSP 

See Also
GridBase.orderBy
operateOptions
DataColumn.sortable
SortStyle
OperateOptions.sortingEnabled
DataField
Examples
Column Filtering
Column Header