반응형
SlickGrid로 정렬 기능을 추가하고, 프그램으로 정렬을 하던지 또는 정렬을 초기화 하는 방법에 대해서 알아보겠습니다.
아래의 코드는 SlickGrid 생성 및 정렬 로직입니다.
// 그리드 옵션
var options = {
editable: true,
enableAddRow: false,
enableCellNavigation: true,
autoHeight: false,
enableColumnReorder: false
};
// 그리드 컬럼
var columns = [
{
id: "COL_ID_01",
field: "COL_ID_01",
width:80,
cssClass: "text_center",
formatter: verCellMergedFormatter,
sortable: true,
name: "컬럼1"
},
{
id: "COL_ID_02",
field: "COL_ID_02",
width:50,
cssClass: "text_center",
formatter: verCellMergedFormatter,
sortable: true,
name: "컬럼2"
},
{
id: "COL_ID_03",
field: "COL_ID_03",
width:60,
cssClass: "text_center",
formatter: verCellMergedFormatter,
sortable: true,
name: "컬럼3"
},
{
id: "COL_ID_04",
field: "COL_ID_04",
width:70,
cssClass: "text_center",
formatter: verCellMergedFormatter,
sortable: true,
name: "컬럼4"
}
];
// 그리드 DataView 생성
var dataView = new Slick.Data.DataView();
// 그리드 생성
var grid = new Slick.Grid("#gridContainer", dataView, columns, options);
// 그리드 헤드 클릭 시 정렬
grid.onSort.subscribe(function (e, args) {
var data = dataView.getFilteredItems();
data.sort(function (dataRow1, dataRow2) {
var field = args.sortCol.field;
var sign = args.sortAsc ? 1 : -1;
var value1 = dataRow1[field];
var value2 = dataRow2[field];
if(value1 == undefined) value1 = "";
if(value2 == undefined) value2 = "";
var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign;
return result;
});
grid.invalidate();
grid.render();
});
그리드의 헤더를 클릭하지 않고 코딩으로 정렬하는 방법입니다.
grid.setSortColumn("COL_ID_01", true); // 컬럼 ID가 "COL_ID_01"에 대해서 오림차순(ASC) 정렬
grid.setSortColumn("COL_ID_01", false); // 컬럼 ID가 "COL_ID_01"에 대해서 내림차순(DESC) 정렬
그리드의 정렬을 해제하는 방법입니다.
grid.setSortColumns([]);
그리드의 정렬된 정보를 얻는 방법입니다.
var sortColumns = grid.getSortColumns();
반응형
'Javascript' 카테고리의 다른 글
SlickGrid 엑셀 익스포트하기 (0) | 2022.08.09 |
---|---|
SlickGrid 데이터 초기화하기 (0) | 2022.07.12 |
SlickGrid 마우스 휠 제대로 작동하지 않을 경우 처리 방법 (0) | 2022.06.13 |
SlickGrid 세로 셀 병합(?)하기 (0) | 2022.05.20 |
SlickGrid Cell 수정 중 Grid Data 반영하기 (0) | 2022.05.13 |
댓글