SMART datagrid v1.4 > Examples
컬럼 헤더를 클릭하거나 GridBase.orderBy 메쏘드를 호출해서 컬럼별로 정렬할 수 있는데, 사용자가 컬럼 헤더 클릭으로 정렬하기 위해서는 우선 GridBase.operateOptions에 정렬 가능하도록 설정돼야 한다. 메쏘드 호출을 통한 정렬은 속성과 상관없다.
function (ev) {
grdMain.operateOptions().setSortingEnabled(ev.target.value);
}
그리드 수준에서 정렬 가능한 상태이더라도 DataColumn.sortable 속성을 통해 컬럼별로 사용자 정렬 가능 여부를 지정할 수도 있다. 아래 "Change Column Sortable" 버튼을 클릭하면 현재 선택된 컬럼의 정렬 여부를 번갈아 설정한다.
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');
}
}
실제 정렬은 컬럼 단위가 아니라 컬럼에 연결된 데이터필드를 기준으로 실행된다. 하나 이상의 필드에 대해 동시에 정렬을 진행할 수 있는데, 먼저 정렬된 필드 값들의 순서를 유지한 상태에서 추가되는 필드 값들이 정렬되게 된다.
sortStyle 속성을 SortStyle.INCLUSIVE로 지정하면 복수 정렬을 할 수 있다. 위의 Sort Style 선택 박스에서 확인한다.
function (ev) {
grdMain.operateOptions().setSortStyle(ev.target.value);
}
SortStyle.REVERSE는 나중에 클릭한 필드를 먼저 정렬하는 방식이다.
OperateOptions.keepFocusedRowWhenSort를 true로 지정하면 정렬 후 포커스행 위치가 유지됨.