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