Calling sort on slickgrid

后端 未结 10 1015
我寻月下人不归
我寻月下人不归 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 19:03

    I'm using multicolumn sorting, and loading saved sort data when initialising the grid.

    As expected, setSortColumns set the sorting, but didnt actually apply it, and dataView.reSort() or .fastSort() didnt seem to help, regardless of what point in loading I called them (I must have missed something, but just couldnt get it to work).

    In the end, this worked for me. I call it immediately after populating my dataView from an ajax call. Its probably not the slickest, so happy to take feedback on board!

    function forceResort() {
    
        var sortColumns = grid.getSortColumns();
        var cols = [];
        $.each(sortColumns, function(index, value) {
            var columnId = value.columnId;
            var sortAsc = value.sortAsc;
            var sortCol = { field: columnId };
            var col = { sortCol: sortCol, sortAsc : sortAsc};
            cols.push(col);
        });
    
        dataView.sort(function (dataRow1, dataRow2) {
    
            var sortResult = 0;
            for (var i = 0, l = cols.length; i < l; i++) {
                if (sortResult !== 0) {
                    break;
                }
    
                var field = cols[i].sortCol.field;
                var sign = cols[i].sortAsc ? 1 : -1;
                var value1 = dataRow1[field] || ''; //handle nulls - otherwise erratic sorting
                var value2 = dataRow2[field] || ''; //handle nulls - otherwise erratic sorting
    
                if ($.inArray(field, dateTypeColumns) > -1) {
                    sortResult = compareDates(value1, value2) * sign;
                } else {
                    if ($.inArray(field, numericColumns) > -1) {
                        sortResult = compareSimple(value1, value2) * sign;
                    } else {
                        sortResult = compareAlphaNumeric(value1, value2) * sign;
                    }
                }
            }
            return sortResult;
        });
    
        grid.invalidate();
        grid.render();
    }
    

提交回复
热议问题