我一直有越来越jqGrid的排序问题。我想最好这样做排序在客户端端上,但我还愿意到数据库的新调用来获取排序的结果也是如此。 我可以单击列标题和排序箭头改变方向,但是数据不会改变的。 我看过了这个问题,但是调用reloadGrid似乎没有帮助。 我的整个网格如下:
本文地址 :CodeGo.net/447431/
-------------------------------------------------------------------------------------------------------------------------
1. 如果您从服务器加载未排序的数据,并希望只是排序的本地数据,一旦你不应
2. 找到了一个解决方案,但不能完全肯定为什么这个工程。也许可以提供一个更好的答案。
3.
本文地址 :CodeGo.net/447431/
var x = $("#grid").jqGrid({
jsonReader: { root: "rows", repeatitems: false },
datatype: "json",
height: 'auto',
autowidth: true,
forceFit: true,
colNames:['ID','Name'],
colModel:[
{name:'id', key:true, index:'id', width:60, sorttype:"int", jsonmap:"id"},
{name:'name', index:'name', width:90, jsonmap: "name"}
],
caption: "Results",
loadonce: true,
sortable: true,
loadComplete: function() {
jQuery("#grid").trigger("reloadGrid"); // Call to fix client-side sorting
}
});
//This data comes from a web service call, hard coding in to test
var jsonData = [
{id: 1, name: 'Apple'},
{id: 2, name: 'Banana'},
{id: 3, name: 'Pear'},
{id: 4, name: 'Orange'}
];
x[0].addJSONData( { rows: jsonData } );
本文地址 :CodeGo.net/447431/
1. 如果您从服务器加载未排序的数据,并希望只是排序的本地数据,一旦你不应
jQuery("#grid").trigger("reloadGrid");
内
loadComplete
。回调
loadComplete
将被称为对本地数据每排序或分页了。此外,它会更好地打电话
jQuery("#grid").trigger("reloadGrid");
内
setTimeout
。在该情况下,在网格的完整优先负载将重新加载之前完成。 我没有测试过,但我想正确的代码
loadComplete
可能是有关以下
loadComplete: function () {
var $this = $(this);
if ($this.jqGrid('getGridParam', 'datatype') === 'json') {
if ($this.jqGrid('getGridParam', 'sortname') !== '') {
// we need reload grid only if we use sortname parameter,
// but the server return unsorted data
setTimeout(function () {
$this.triggerHandler('reloadGrid');
}, 50);
}
}
}
在该情况下
reloadGrid
在网格的来自服务器的优先个负载将被调用一次。在下次调用的价值
datatype
选项将已
'local'
。
2. 找到了一个解决方案,但不能完全肯定为什么这个工程。也许可以提供一个更好的答案。
var x = $("#grid").jqGrid({
jsonReader: { root: "rows", repeatitems: false },
datatype: "json",
height: 'auto',
autowidth: true,
forceFit: true,
colNames:['ID','Name'],
colModel:[
{name:'id', key:true, index:'id', width:60, sorttype:"int", jsonmap:"id"},
{name:'name', index:'name', width:90, jsonmap: "name"}
],
caption: "Results",
//Required for client side sorting
loadonce: true,
gridComplete: function(){
$("#grid").setGridParam({datatype: 'local'});
}
3.
loadonce
仅适用于预定义的loader。如果数据类型为函数,你应该设置
datatype:local
后网格的优先个加载的自定义函数手动。 尝试像这样:
datatype : function (){
$.ajax({
…
complete :function (…){
…
$("#mygrid").setGridParam({datatype:'local'});
}
})
},