Возможно, это кому-нибудь поможет. Не уверен, что это потому, что сейчас 2014 или я не понимаю проблему, которую пытается решить этот пост, но это очень просто с помощью slickgrid следующим образом:
Похоже, проблема заключается в том, как «запомнить» текущую настройку сортировки, поэтому в Asp.Net есть предложения, содержащие это значение для вас. Однако slickGrid может сказать вам, каков текущий порядок сортировки:
Чтобы переключить сортировку asc desc, вы можете использовать grid.getSortColumns (), чтобы узнать, какова сортировка столбцов в настоящее время. Это то, что я сделал, но я сортирую только по 1 столбцу за раз, поэтому я могу смело делать это: 'if (grid.getSortColumns () [0] .sortAsc)'
... так что мой код работает следующим образом:
// Make sure you have sortable: true on the relevant column names or
// nothing happens as I found!!
var columns = [
{ name: "FileName", id: "FileName", field: "FileName", width: 95, selectable: true, sortable: true },
{ name: "Type", id: "DocumentType", field: "DocumentType", minWidth: 105, width: 120, maxWidth: 120, selectable: true, sortable: true },
{ name: "ScanDate", id: "ScanDate", field: "ScanDate", width: 90, selectable: true, sortable: true }, ];
.. загрузите ваши данные как обычно, затем выполните сортировку:
// Clicking on a column header fires this event. Here we toggle the sort direction
grid.onHeaderClick.subscribe(function(e, args) {
var columnID = args.column.id;
if (grid.getSortColumns()[0].sortAsc) {
grid.setSortColumn(args.column.id, true);
}
else {
grid.setSortColumn(args.column.id, false);
}
});
// The actual sort function is like this
grid.onSort.subscribe(function (e, args) {
sortdir = args.sortAsc ? 1 : -1;
sortcol = args.sortCol.field;
//alert('in sort');
// using native sort with comparer
// preferred method but can be very slow in IE with huge datasets
dataView.sort(comparer, args.sortAsc);
grid.invalidateAllRows();
grid.render();
});
// Default comparer is enough for what I'm doing here ..
function comparer(a, b) {
var x = a[sortcol], y = b[sortcol];
return (x == y ? 0 : (x > y ? 1 : -1));
}
Наконец, убедитесь, что на вашем сайте есть папка с изображениями SlickGrid, и вы получите стрелки asc / desc, появляющиеся в столбце при его выборе. Если они отсутствуют, текст будет выделен курсивом, но стрелки не появятся.