在slickgrid上调用sort

Sid*_*rth 6 slickgrid

在slickgrid中,我能够使用.来设置排序列和它的排序方向grid.SetSortColumn(colName,true/false).这仅设置排序标志符号,但不进行排序.有没有办法调用sort事件处理程序.我已经定义了类似的排序处理程序grid.onSort.subscribe(function(){});

Mr.*_*unt 12

您正在观察的行为是正确的.

    grid.setSortColumn(columnId, isAsc);
Run Code Online (Sandbox Code Playgroud)

仅更新排序列上的字形.在您的情况下,您最初需要对数据进行排序,然后使用setSortColumn更新sortColumn上的字形.您可以重复使用onSort事件中使用的排序器,如下所示:

   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);
   });
Run Code Online (Sandbox Code Playgroud)

我是如何得出这个解决方案的?

在这里阅读评论.https://github.com/mleibman/SlickGrid/issues/325


mat*_*tma 0

也许会对你有所帮助。看起来 SlickGrid 正在触发自我排序 - 因此您可以根据需要手动触发它。