2015-06-22 70 views
1

我想添加服务器端分页到我的网格。另外,我有一个由'许可','号码'和'组'的过滤器。当我按下一页按钮控制器被调用,我获得的数据,但我的网格重新加载页1,我不能查看页面2或3或4 ...在服务器端jqgrid分页

在onPaging事件,如果我使用本地数据类型没有数据显示,如果我使用json数据类型,我只能看到第一页。

这是代码:

var arrayData = []; 
var pgevent; 
var pager; 
var accion; 

$(function() { 
    navLocal.cambia('002'); 

    $("#tabs").tabs(); 
    $("#tblResults").jqGrid({ 
     mtype: 'POST', 
     datatype: "local", 
     height: 250, 
     colNames:['license', 'id', 'number', 'brand', 'model', 'show'], 
     colModel:[ 
      {name:'license',index:'license', width:110}, 
      {name:'id',index:'id', hidden: true}, 
      {name:'number',index:'number', width:110, sorttype:"int"}, 
      {name:'brand',index:'brand', width:250}, 
      {name:'model',index:'model', width:250}, 
      {name:'show',index:'show', width:60, align:"center", sortable:false, formatter:playerPicFormatter}  
     ], 
     multiselect: false,   
     viewrecords: true, 
     pager: "#jqGridPager", 
     rowNum: 10, 
     caption: "Results", 
     width: 700, 
     loadonce: true, 

     rowList: [10,20,50], 



     onPaging : function(pgButton) { 
      $("#tblResults").setGridParam({datatype:'json'}); 
      find(); 
      pgevent = pgButton; 
      pager = this.p.pager; 



     }, 

     loadComplete: function() { 
      $("#tblResults").setGridParam({datatype:'local'}); 
     } 


    });  

    find(); 
}); 



function find() { 

    var gridArrayData = []; 

    $.ajax({ 
     url : "/find.htm", 
     type : "POST", 
     dataType : "json", 
     data: { 
      license: $("#license").val(), 
      number: $("#number").val(), 
      group: $("#group").val(), 
      page: $("#tblResults").jqGrid().getGridParam('page'), 
      rowNum: $("#tblResults").jqGrid().getGridParam('rowNum'), 
      sortname: $("#tblResults").jqGrid().getGridParam('sortname'), 
      sortorder: $("#tblResults").jqGrid().getGridParam('sortorder') 

     }, 
     success : function(result) { 

      jQuery('#tblResults').jqGrid('clearGridData'); 

      for (var i = 0; i < result.length; i++) { 
       var item = result[i]; 
       gridArrayData.push({ 
        id : item.id, 
        license : item.license, 
        number : item.number, 
        brand : item.brand, 
        model : item.model 

       }); 
      } 
      // set the new data 
      $("#tblResults").jqGrid('setGridParam', { 
       data : gridArrayData 
      }); 

      // refresh the grid 
      $("#tblResults").trigger('reloadGrid', [{page:2}]); 
     }, 

     loadComplete: function() { 
      $("#tblResults").setGridParam({datatype:'local'}); 
      } 
    }); 

    arrayData = gridArrayData; 

} 

回答

0

你正在做找到,但在回调异步调用你有其他的说法后发现。这些将在查找结束之前执行。 这可能是问题吗?

+0

Thx。我删除'jQuery('#tblResults')。jqGrid('clearGridData');'声明和它的工作! :)我想这是因为它找到后会抛出一个事件。 – Rudyard

+0

@Rudyard尼斯:)你能接受答案吗? – Markus

+0

完成:D Thx再次 – Rudyard