Calling sort on slickgrid

后端 未结 10 889
我寻月下人不归
我寻月下人不归 2021-02-04 18:40

In the slickgrid I\'m able to set the sort column and it\'s sort direction using the grid.SetSortColumn(colName,true/false). This only sets the sorting glyph but do

10条回答
  •  感情败类
    2021-02-04 18:53

    The behavior you are observing is correct.

        grid.setSortColumn(columnId, isAsc);
    

    only updates the glyph on the sort column. In your case, you will initially need to sort the data, and then use setSortColumn to update the glyph on sortColumn. You can reuse sorter used in onSort event like this:

       var gridSorter = function(columnField, isAsc, grid, gridData) {
           var sign = isAsc ? 1 : -1;
           var field = columnField
           gridData.sort(function (dataRow1, dataRow2) {
                  var value1 = dataRow1[field], value2 = dataRow2[field];
                  var result = (value1 == value2) ?  0 :
                             ((value1 > value2 ? 1 : -1)) * sign;
                  return result;
           });
           grid.invalidate();
           grid.render();
       }
       var grid = new Slick.Grid($gridContainer, gridData, gridColumns, gridOptions);
    
       //These 2 lines will sort you data & update glyph while loading grid     
       //columnField is field of column you want to sort initially, isAsc - true/false
       gridSorter(columnField, isAsc, grid, gridData);
    
       //I had the columnField, columnId same else used columnId below
       grid.setSortColumn(columnField, isAsc); 
    
       grid.onSort.subscribe(function(e, args) {
            gridSorter(args.sortCol.field, args.sortAsc, grid, gridData);
       });
    

    How I arrived on this solution?

    Read comments here. https://github.com/mleibman/SlickGrid/issues/325

提交回复
热议问题