Я использую многоколоночную сортировку и загружаю сохраненные данные сортировки при инициализации сетки.
Как и ожидалось, setSortColumns установила сортировку, но фактически не применила ее, а dataView.reSort () или .fastSort (), похоже, не помогло, независимо от того, в какой момент загрузки я им звонил (должно быть, я что-то пропустил, но просто не мог заставить его работать).
В конце концов, это сработало для меня.Я вызываю его сразу после заполнения моего dataView от вызова ajax.Это, вероятно, не самое приятное, поэтому с удовольствием принимаю отзывы на борту!
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();
}