2015-06-22 11 views
1

Я пытаюсь добавить страницу подкачки сервера к моей сетке. В adittion у меня есть фильтр по «лицензии», «номеру» и «группе». Когда я нажимаю кнопку следующей страницы, вызывается контроллер, и я получаю данные, но моя сетка перезагружается на стр. 1, и я не могу просмотреть страницу 2 или 3 или 4 ...jqgrid пейджинг на стороне сервера

В событии onPage, если я использую локальную datatype не отображаются данные, если я использую 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 Nice :) Можете ли вы принять ответ, пожалуйста? – Markus

+0

Сделано: D Thx снова – Rudyard

Смежные вопросы