2013-11-06 15 views
2

Я пытаюсь сортировать столбец в jqgrid двумя разными столбцами. Например, у меня есть столбец «StoreName», и его сортировка будет определяться столбцами «d0_key» и «d0_tot_key» (оба целых числа). Я понимаю, что sorttype в colmodel может использоваться для создания пользовательского сортировки, но я не нахожу алгоритм, который учитывает оба столбца. Ниже представлено простое представление данных.jqgrid: Сортировка на основе двух столбцов

StoreName d0_key d0_tot_key 
92nd Gessner 1 0 
92nd Gessner 1 0 
Total Sum  1 10 
Total Avg  1 20 
Annco   2 0 
Annco   2 0 
Total Sum  2 10 
Total Avg  2 20 

ответ

1

Если вам нужно, что сортировка по StoreName колонкам должны путем сделано на основе значений из столбцов «d0_key» и «d0_tot_key» вы должны определить sorttypeкак функция в StoreName колонки. Перед сортировкой по столбцу StoreName будет запущен столбец sorttype. Значение, возвращаемое функцией, будет использоваться вместо значение из столбца StoreName во время определения заказа или отсортированной сетки. Таким образом, вы можете построить некоторую функцию, например, d0_key * 1000 + d0_tot_key, которая соответствует вашим требованиям. Если я понимаю, что вы исправить, то это может быть примерно следующим

{ 
    name: "StoreName", 
    sorttype: function (cell, obj) { 
     return parseInt(obj.d0_key) * 1000 + parseInt(obj.d0_tot_key); 
    }, 
    ... 
} 

The answer, this one и another one предоставляет примеры использования sorttype в качестве функции. This one кажется мне в основном близким к вашим требованиям.

+0

Это хорошо работает, спасибо. Я пытаюсь выяснить, как я могу выяснить, какой столбец я нажал, чтобы сортировать, пока я в функции sorttype. Есть ли способ сделать это? –

+0

@ThomasMondelli: Извините, но я не понимаю ваш вопрос. Если вы включили функцию как свойство sorttype в столбец «StoreName», и если эта функция вызывается, щелкнет столбец «StoreName». Является ли ваша реальная сетка другой сетью, которую вы описали? – Oleg

2

Версия 4.5.0 of the jqGridadded multi-sort support. Вы должны быть в состоянии сделать что-то вроде этого:

Просто убедитесь, что вы включили multiSort на:

$('#gridId').jqGrid({ 
    ... 
    multiSort: true, 
    ... 
}); 

Это даст вам возможность нажать несколько заголовков. Если вы хотите отсортировать программно, это должно работать:

$('#gridId') 
    .jqGrid('sortGrid', 'd0_key', true, 'asc') 
    .jqGrid('sortGrid', 'd0_tot_key', true, 'asc'); 

Есть другие дополнительные свойства, которые могут представлять интерес для Вас, которые идут на столбец модели объектов, таких как firstsortorder ("asc"/"desc") и sortable (true/false).

Кроме того, похоже, что были исправлены ошибки в 4.5.1 и 4.5.4 для многоуровневой сортировки, поэтому я бы просто пошел вперед и загрузил последнюю версию.

Смежные вопросы