jqGrid的客户端排序问题

我一直有越来越jqGrid的排序问题。我想最好这样做排序在客户端端上,但我还愿意到数据库的新调用来获取排序的结果也是如此。 我可以单击列标题和排序箭头改变方向,但是数据不会改变的。 我看过了这个问题,但是调用reloadGrid似乎没有帮助。 我的整个网格如下:
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'});
  }
 })
},

本文地址 :CodeGo.net/447431/ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值