我有同样的问题, sortGrid() 不能按降序工作。
但是,问题不在于它不起作用,它实际上是 loadonce:true 属性。
如果您使用 loadonce:true jqGrid 在第一次从网格加载数据后将数据类型参数更改为“本地”。所有下一个网格重新加载(排序、分页、过滤)都在本地工作。如果您想再次从服务器刷新网格数据,您应该将数据类型设置为其原始值(“json”或“xml”)。
因此,我们需要一点技巧来克服这个问题并在 loadComplete 之后执行 sortGrid():
这是加载网格后完美选择页面和排序选项的代码。
$('#myGrid').trigger("reloadGrid");
//SORTED_COLUMN is Global
var DEFAULT_SORTED = false;
if (SORTED_COLUMN.index != undefined)
DEFAULT_SORTED = true;
$("#myGrid").jqGrid({
datatype : "local",
autowidth : true,
altclass : "jqgridAltRow",
altRows :true,
shrinkToFit :true,
loadonce: true,
data :data,
editurl: 'clientArray', // to give a successful call after inline editing,
page: CURRENT_PAGE,
//method : 'post',
cellEdit : 'true',
cellsubmit : 'remote',
beforeRequest: function () {
responsive_jqgrid($(".ui-jqgrid"));
},
onSortCol: function (index, columnIndex, sortOrder) {
SORTED_COLUMN.index = index;
SORTED_COLUMN.columnIndex = columnIndex;
SORTED_COLUMN.sortOrder = sortOrder;
},
loadComplete: function(){
$.fn.jqm = undefined;
setTimeout(function(){
if(DEFAULT_SORTED){
DEFAULT_SORTED = false;
$('#myGrid').jqGrid('sortGrid', SORTED_COLUMN.index, false, SORTED_COLUMN.sortOrder);
$('#myGrid').trigger('reloadGrid', [{page: CURRENT_PAGE}]);
}
}, 100);
...
if(DEFAULT_SORTED) 这个检查很重要,否则 sortGrid() 将递归执行。
希望对你有帮助,谢谢:)