javascript 多列排序 - Jqgrid
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25801755/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Multiple column sorting - Jqgrid
提问by user2160534
I am trying to sort multiple columns on Jqgrid..But its not sorting at all. I am using below code.
我正在尝试对 Jqgrid 上的多个列进行排序。但它根本没有排序。我正在使用下面的代码。
multiSort : true,
sortname: 'orderNo asc, cd',
sortorder: 'desc',
multiSort : true,
sortname: 'orderNo asc, cd',
sortorder: 'desc',
How to do that? Is any other way to do that?
怎么做?有没有其他方法可以做到这一点?
I also tried below one
我也试过下面一个
$('#OrderGrid').jqGrid('sortGrid', 'orderNo', true, 'asc')
.jqGrid('sortGrid', 'cd', true, 'desc');
But no luck still now...
但现在仍然没有运气......
回答by Oleg
To set "desc"
order one have to call sortGrid
twice:
要设置"desc"
顺序一必须调用sortGrid
两次:
$('#OrderGrid').jqGrid('sortGrid', 'orderNo', true, 'asc')
.jqGrid('sortGrid', 'cd', true, 'desc')
.jqGrid('sortGrid', 'cd', true, 'desc');
For example if you need to set sort direction of both orderNo
and cd
columns to desc
you should use
例如,如果您需要将列orderNo
和cd
列的排序方向都设置为desc
您应该使用
$('#OrderGrid').jqGrid('sortGrid', 'orderNo', true, 'desc')
.jqGrid('sortGrid', 'orderNo', true, 'desc')
.jqGrid('sortGrid', 'cd', true, 'desc')
.jqGrid('sortGrid', 'cd', true, 'desc');
Be sure that you set multiSort
option of jqGrid to true
before calling of sortGrid
:
确保在调用之前将multiSort
jqGrid 的选项设置true
为sortGrid
:
$('#OrderGrid').jqGrid('setGridParam', {multiSort: true})
.jqGrid('sortGrid', 'orderNo', true, 'asc')
.jqGrid('sortGrid', 'cd', true, 'desc')
.jqGrid('sortGrid', 'cd', true, 'desc');
Alternatively you can don't use sortGrid
at all. The demodemonstrates the approach. It uses the following code
或者,您可以根本不使用sortGrid
。该演示演示了该方法。它使用以下代码
setSorting.call($grid[0], "name", "desc");
setSorting.call($grid[0], "invdate", "asc");
$grid.jqGrid("setGridParam", {
multiSort: true,
sortname: "name desc, invdate asc"
}).trigger("reloadGrid");
where setSorting
function are defined as below
其中setSorting
函数定义如下
var setSorting = function (colName, sortOrder) {
var $self = $(this),
colModel = $self.jqGrid("getGridParam", "colModel"),
headers = $self[0].grid.headers,
showSortIconsInAllCols = $self.jqGrid("getGridParam", "viewsortcols")[0],
cmLength = colModel.length,
cm,
$sortSpan,
i;
for (i = 0; i < cmLength; i++) {
cm = colModel[i];
if (cm.name === colName) {
cm.lso = String(sortOrder).toLowerCase() === "desc" ? "desc" : "asc";
}
$sortSpan = $(headers[i].el).find(">div.ui-jqgrid-sortable>span.s-ico");
if (showSortIconsInAllCols || cm.lso) {
$sortSpan.show();
if (cm.lso) {
$sortSpan.find(">span.ui-icon-" + cm.lso)
.removeClass("ui-state-disabled");
}
}
}
};