您观察到的行为是正确的。
grid.setSortColumn(columnId, isAsc);
仅更新排序列上的字形。
在您的情况下,您最初需要对数据进行排序,然后使用 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);
});
我是如何得出这个解决方案的?
在这里阅读评论。https://github.com/mleibman/SlickGrid/issues/325 https://github.com/mleibman/SlickGrid/issues/325