guide Sorting

RtDataView

리스트 컨트롤RtDataView에 연결되면 데이터행 정렬이 가능하다. 즉, 먼저 createView로 먼저 데이터뷰를 생성해야 한다.

const dv = data.createView('dv', {});
list.data = dv;

최초 정렬 상태가 필요하면 데이터뷰 생성 옵션에 정렬 설정을 포함할 수 있다.

const dv = RealTouch.createDataView('dv', data, {
    sort: ['DEPT', 'NAME']
});

혹은, 빌더 패턴으로도 가능하다.

const dv = RealTouch.createDataView('dv', data)
                .sort('DEPT');

Field Bar

사용자는 컨트롤 헤더 아래 표시되는 필드 Bar를 이용해 정렬 상태를 설정할 수 있다.

image-01

필드 Bar는 기본적으로 표시되지 않기 때문에 설정을 해줘야 한다. 자세한 속성 설명은 필드 Bar 페이지를 참조한다.

list.setConfig({
    options: {
        fieldBar: {
            visible: true,
            fields: 'template'
        }
    }
})

API

데이터뷰 생성 후에도 정렬 메소드들을 사용하면 UI 관여 없이 언제든 정렬 상태를 변경할 수 있다.
sort는 기존 정렬 상태를 제거하고 새로 정렬한다.

dv.sort({
    field: 'DEPT',
    dir: RealTouch.RtDataSortDirection.DESCENDING
}, true);
// 복수 필드 지정
dv.sort([{
    field: 'DEPT',
    dir: 'descending'
}, {
    field: 'NAME',
    dir: 'ascending'
}], true);

// 방향을 지정하지 않은 문자열로 지정하면 RtDataSortDirection.ASCENDING(= 'ascending')이다.
dv.sort('DEPT', true);
dv.sort(['DEPT', 'NAME'], true);

// 기본 필드 정렬 대신 정렬 콜백을 지정할 수도 있다.
dv.sort({
    field: 'c1', // 콜백일 때는 정렬 이름
    comparer: (r1, v1, r2, v2) => v1.quantity * v1.price - v2.quantity * v2.price)
});

두 번째 매개변수를 true로 지정해야 데이터뷰의 행들이 새로 구축된다.
기존 정렬 상태를 유지한 채 새로운 정렬 설정을 추가할 수도 있다.

dv.addSort('NAME', 'ascending', 'NAME', true);
dv.appendSort('DEPT', 'descending', true);
dv.appendSorter('s1', (r1, v1, r2, v2) => v1.qty * v1.price - v2.qty * v2.price, true);

toggleSort 호출로 특정 데이터필드의 정렬 상태를 변경할 수 있다.

dv.toggleSort('NAME', true);

removeSort, clearSort로 지정된 정렬 상태를 제거할 수 있다.

dv.removeSort('NAME', true);
dv.clearSort(true);

See Also

RtData.createView
RealTouch.createDataView
RtDataView.sort
Filtering
검색 Bar
검색 패널