2015-04-29 80 views
0

我通過傳遞第n個應該得到第100個行的頁碼n來從服務器獲取json數據。加載一次後,按下「下一頁」按鈕,它似乎正確地獲取新數據(我在刷新時輸出新數據中的第一個對象),但它沒有在我的網格中填充這些數據。jqGrid不會刷新新數據

<div> 
    <button id="refreshJobsButton">Refresh Jobs</button> 
    <button id="nextPageJobsButton">Next page</button> 
    <table id="JobTable"><tr><td/></tr></table> 
    <div id="JobPager" class="ui-widget"></div> 
</div> 

$(document).ready(function() { 
    var page = 0; 
$('#nextPageJobsButton').button({ 
      icons: { 
       primary: "ui-icon ui-icon-arrowrefresh-1-s" 
      } 
    }).click(function(){ 
    page = page + 1; 
$("#JobTable").jqGrid('GridUnload'); 
     refreshJob(page); 
     }); 
}; 
     function refreshJob(page) { 
      var $source = "ajax/refreshJob?page=" + page; 

     $.ajax({ 
      url: $source, 
      dataType: "json", 
      success: populateJobs, 
      error: handleAjaxError 
     }); 
    } 

     function populateJobs(jobs) { 
    k = Object.keys(jobs)[0]; 
    l = Object.keys(jobs[k])[0]; 
    alert ("First job in list is " + jobs[k][l]); //Outputs correct job of that page 

     $(function() { 
      var grid = $('#JobTable'); 
      $('#JobTable').jqGrid({ 
       datatype: 'jsonstring', 
       editurl: 'ajax/modifyJob', 
       mtype: 'POST', 
       loadonce: false, 
       datastr: jobs, 
       height: 600, 
       autowidth: true, 
       forceFit: true, 
       gridview: true, 
       viewrecords: true, 
       multiselect: true, 
       sortable: false, 
       toppager: true, 
       treeGrid: true, 
       treeGridModel: 'adjacency', 
       treedatatype: 'POST', 
       ExpandColumn: 'Job', 
       ExpandColClick: true, 
       colNames: [ 
        "Id (hidden)", 
        "Job Type (hidden)" 
       ], 
       colModel: [{ 
        name: 'id', 
        index: 'id', 
        editable: true, 
        edittype: 'text', 
        key: true 
       }, { 
        name: 'jobType', 
        index: 'jobType', 
        editable: true, 
        edittype: 'text' 
       }], 
       jsonReader: { 
        repeatitems: false, 
        root: function(obj) { 
         return obj; 
        }, 
        page: function() { 
         return 1; 
        }, 
        total: function() { 
         return 1; 
        }, 
        records: function(obj) { 
         return obj.length; 
        } 
       } 
      }); 

任何人都可以建議有什麼不好?

回答

0

在代碼中搜索$(function() {。它與$(document).ready(function() {相同,但是您已包含在$(document).ready(function() {之內的塊$(function() {。您應該刪除$(function() {(請參閱您創建jqGrid的位置附近)。

+0

啊謝謝幫助! – user3710760

+0

@ user3710760:不客氣! – Oleg