Jqgrid 客户端排序不工作

Jqgrid 客户端排序不工作,jqgrid,Jqgrid,我有一个包含以下信息的jqgrid: $("#Table").jqGrid({ url: 'u.json, loadonce:true, colNames: msd.rise.columnDisplayNames, colModel: msd.rise.colModelDef, gridview: true, toppager: false,

我有一个包含以下信息的jqgrid:

$("#Table").jqGrid({
            url: 'u.json,
            loadonce:true,
            colNames: msd.rise.columnDisplayNames,
            colModel: msd.rise.colModelDef,
            gridview: true,
            toppager: false,
            sortname: 'sd',
            sortorder: 'desc',
            sortable:true,
            loadComplete: function(){
                $("#Table").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
            }
});

客户端排序不起作用。我把
loadonce:true
$(“#表”).setGridParam({datatype:'json',page:1}).trigger('reloadGrid')基于答案。但它仍然不起作用。有什么想法吗?

您当前使用的
loadComplete
的代码是错误的。在
loadComplete
的内部,不应使用无条件的
.trigger('reloadGrid')
。此外,在重新加载之前将
datatype
设置为
'json'
,将从服务器重新加载数据,但需要本地重新加载才能应用排序。正确的代码如示例中所示:

loadComplete:函数(){
var$self=$(本);
if($self.jqGrid(“getGridParam”,“datatype”)=“json”){
setTimeout(函数(){
$self.trigger(“reloadGrid”);//用于修复客户端排序的调用
}, 50);
}
}

在从服务器完成初始加载后,代码只重新加载一次。

非常感谢您的回答。我把它放在代码里了。使用settimeout时,网格无法正确加载(加载总是在顶部)。当我删除setTimeout时,它会工作(加载不会出现),但当我单击“排序”时,网格不会再次加载。@amandachaw:可能您在
colModel
中还有一些其他问题。你能用你使用的
colModel
和一个输入数据的例子来附加你的任务吗(1-2行数据就足够了)。您使用哪种数据类型?带有语法错误
url:'u.json,
的行允许我假设您使用的是
数据类型:“json”
,您未将其包含在发布的代码中。如果您确实使用默认的
datatype:“xml”
,那么您应该更改
loadComplete
来测试它:
If($self.jqGrid(“getGridParam”,“datatype”)==“xml”){
。我有rowNum:0,我删除了它,您的代码现在正在工作:)非常感谢您的帮助。是的,数据类型是json。