多列排序 - Jqgrid

use*_*534 2 javascript jquery jqgrid

我正在尝试对 Jqgrid 上的多个列进行排序。但它根本不排序。我正在使用下面的代码。

multiSort : true, sortname: 'orderNo asc, cd', sortorder: 'desc',

怎么做?还有其他方法可以做到这一点吗?

我也尝试过下面的一个

 $('#OrderGrid').jqGrid('sortGrid', 'orderNo', true, 'asc')
 .jqGrid('sortGrid', 'cd', true, 'desc');
Run Code Online (Sandbox Code Playgroud)

但现在仍然没有运气......

Ole*_*leg 5

要设置"desc"订单,一必须调用sortGrid 两次

$('#OrderGrid').jqGrid('sortGrid', 'orderNo', true, 'asc')
    .jqGrid('sortGrid', 'cd', true, 'desc')
    .jqGrid('sortGrid', 'cd', true, 'desc');
Run Code Online (Sandbox Code Playgroud)

例如,如果您需要将orderNocd列的排序方向设置为desc您应该使用

$('#OrderGrid').jqGrid('sortGrid', 'orderNo', true, 'desc')
    .jqGrid('sortGrid', 'orderNo', true, 'desc')
    .jqGrid('sortGrid', 'cd', true, 'desc')
    .jqGrid('sortGrid', 'cd', true, 'desc');
Run Code Online (Sandbox Code Playgroud)

确保在调用之前将multiSortjqGrid 的选项设置为:truesortGrid

$('#OrderGrid').jqGrid('setGridParam', {multiSort: true})
    .jqGrid('sortGrid', 'orderNo', true, 'asc')
    .jqGrid('sortGrid', 'cd', true, 'desc')
    .jqGrid('sortGrid', 'cd', true, 'desc');
Run Code Online (Sandbox Code Playgroud)

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");
Run Code Online (Sandbox Code Playgroud)

其中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");
            }
        }
    }
};
Run Code Online (Sandbox Code Playgroud)