2014-07-27 77 views
2

我正在爲JQGrid(使用MVC4)實現服務器端分頁。我能夠做到這一點。我沒有使用JQGrid的尋呼機選項。相反,我使用自定義尋呼機實現。爲此,我需要獲取服務器返回的總頁數。頁面計數在jqgrid與服務器端分頁

我曾嘗試以下:

grid.getGridParam('lastpage') -- always returns 1, which makes sense as I am returning only one page contents to the grid 
grid.getGridParam('total') -- I tried this because I was setting this value in the controller, but it is returning null 
grid.getGridParam('records') -- always returns 10, my page size. 

回答

0

如果使用dataType : "json",那麼你需要的jqGrid的jsonReader屬性來設置這些值,

$("#gridid").jqGrid({ 
    ... 
     jsonReader : { 
      root: "rows", 
      page: "page", 
      total: "total", 
      records: "records", 
      repeatitems: true, 
      cell: "cell", 
      id: "id", 
      userdata: "userdata", 
      subgrid: { 
      root:"rows", 
      repeatitems: true, 
      cell:"cell" 
      } 
     }, 
    ... 
    }); 

這到底是值發送到服務器獲取數據。所以如果你必須重寫這些值,你需要改變這些值。

因此,請確保您在服務器端使用相同的值來獲取這些值。

2

我想你錯誤地使用了loadonce: true選項。該選項的目標是客戶端分頁,排序和過濾/搜索。在使用loadonce: true選項的情況下,服務器必須返回所有行。在使用loadonce: true選項的情況下,值total,recordspage將被忽略,並且相應的值將基於從服務器返回的項目總數來設置。由於您只返回了10個項目(第一頁的項目),因此參數值與您在問題中所描述的完全相同。順便說一下,如果你沒有那麼大的數據集(例如1-10萬行),我建議你使用loadonce: true選項。服務器應在的情況下返回所有項目,並按請求的參數排序(sidxsord)。可以從服務器返回所有排序項目的數組,而無需任何附加信息。

順便說jqGrid的的相關頁面參數的含義如下:

  • - 基於1的號碼當前頁面
  • 的 - 頁碼最後一頁
  • rowNum - 頁面大小 - 頁面中記錄的最大數量(最後一頁可以包含較少記錄)
  • 記錄 - 總記錄(在所有頁)在網格
  • RECCOUNT - 在頁面(小於或等於 頁面大小的rowNum)
顯示記錄的總數