gridLib/jqGrid

jqgird sort, filter (colmodel name/index, colName)

dddzr 2022. 10. 23. 12:52

1. name과 index

jqGrid의 colmodel에서

-name : 서버로 부터 넘어오는 data와 변수명을 맞춰야함. colName을 지정하지 않으면 name으로 생성됨.
-index : jqGrid에서 접근할 이름(sort, filter에 기본적으로 사용). 미지정시 name을 따라간다.

 

var colModel =  [
    {colName : 'col1', name:'col1', index:'col1', align:'center', sortable: true},
    {colName : 'col2', name:'col2',    index:'col2',    align:'left', sortable: true},
];

*colName

눈에 보이는 필드네임으로 지정하지 않으면 name을 따라가는데 colmodel에 임의로 colName같은 값을 추가하여 mapping하여 사용할 수 있다.

var colNames = colModel.map(function(item){return item.colName;}),

 

2. filter sort

filter나 sort에 사용되는 값은 index인데 실제 데이터는 name을 따라가기 때문에 

index와 name이 다를 때는 동작하지 않는다.

 

Sort

OnSortCol 옵션에 사용할 function명을 넣어준다.

  $("#Grid").jqGrid({
    height: 300,
    width: 600,
    colNames: colNames,
    colModel: colModel,
    rowNum : 10,
    OnSortCol: beforeSort,
  });

name으로 sort하는 함수

function beforeSort(colName, conIndex, sortorder) {
  grid = $(this);
  let col = grid.jqGrid("getGridParam", "colModel")[conIndex]
  grid.jqGrid('setGridParam', {sortname: col.name, sortorder: sortorder}).trigger('reloadGrid', [{page: 1}]);
  return false;
}

 

filter

filterToolbar의 beforeSearch 옵션에 사용할 function 명을 넣어준다.

name으로 filter하는 함수

$('#Grid').jqGrid('filterToolbar', { stringResult: true, beforeSearch: searchPreparation });

function searchPreparation(grid) {
  if (grid == undefined)
      grid = $(this);
  else
      grid = $(grid);
  var postData = grid.jqGrid('getGridParam', 'postData');
  var searchData = jQuery.parseJSON(postData.filters);
  var gridCol = grid.getGridParam("colModel");
  for (var i = 0; i < searchData.rules.length; i++) {
      for (var j = 0; j < gridCol.length; j++) {
          if (gridCol[j].index != gridCol[j].name && searchData.rules[i].field == gridCol[j].index) {
              searchData.rules[i].field = gridCol[j].name;
              break;
          }
      }
  }
  grid.jqGrid('setGridParam', { postData: { filters: JSON.stringify(searchData)} });
  return false;
}

 

'gridLib > jqGrid' 카테고리의 다른 글

[JqGrid] GroupHeader  (0) 2023.01.09
[JqGrid] Frozen Columns (열 고정)  (0) 2022.12.17
jqGrid 가로 스크롤 (데이터/row 없을 때)  (0) 2022.10.23
jqGrid filter (filter 할 때 multiselect유지)  (1) 2022.09.25
JqGrid 공백(setCell)  (0) 2022.07.11