我在ASP.NET MVC webapp中使用jqGrid。首次加載頁面時,頁面按鈕被禁用,並始終顯示第1頁。但是,如果我更改頁面大小,對列進行排序或執行搜索,頁面會適當更新。jqGrid不計算第一次加載頁面
我試着在gridComplete和loadComplete中觸發reloadGrid,但都沒有這樣做。當我執行其他操作以獲取分頁刷新時,會調用什麼?
這裏是我的網格:
$(document).ready(function() {
$('#grid').jqGrid({
url: '@Url.Action("GetGridData", "MyController")',
datatype: 'json',
loadonce: true,
mtype: 'POST',
postData: {},
colNames: ['Name', 'Price', 'Inventory'],
colModel: [
{ name: 'Name', index: 'Name' },
{ name: 'Price', index: 'Price', sorttype: 'float', formatter: 'number', align: 'right' },
{ name: 'Inv', index: 'Inv', sorttype: 'int', align: 'right' }
],
pager: '#gridpager',
rowNum: 10,
rowList: [5, 10, 20, 50, 100],
sortname: 'Name',
sortorder: 'asc',
viewrecords: true,
caption: 'Inventory',
hidegrid: false,
forceFit: true,
height: 'auto',
width: 1200
//loadComplete: function() {
// $('#grid').trigger("reloadGrid");
//},
//gridComplete: function() {
// $('#grid').trigger("reloadGrid");
//}
}).jqGrid('filterToolbar', { searchOnEnter: false }).jqGrid('navGrid', '#gridpager', { del: false, add: false, edit: false, search: false });
Server代碼:
[HttpPost]
public JsonResult GetGridData(string sidx, string sord, int page, int rows)
{
List<Inventory> data = InventoryModel.GetInventory();
var count = data.Count;
var jsonData = new
{
total = (int)Math.Ceiling((double)count/rows),
page = 1,
records = count,
rows = (from row in data
select new
{
id = row.Name,
cell = new object[]
{
row.Name,
row.Price,
row.Inv
}
}).ToArray()
};
return Json(jsonData);
}
JSON數據:
{
"total":11,
"page":1,
"records":104,
"rows": [ { "id":"PRODUCT-1", "cell":["PRODUCT-1",0.52,41] },
{ "id":"PRODUCT-2", "cell":["PRODUCT-2",0.43,50] },
... ]
}
如果我刪除loadonce:true,它會正確顯示,但是之後我失去了客戶端排序。 – Paul 2012-01-30 20:28:20