Я использую jqGrid в веб-приложении ASP.NET MVC.При первой загрузке страницы кнопки пейджера отключаются и всегда показывают страницу 1 из 1. Однако если я изменю размер страницы, отсортирую столбец или выполню поиск, страницы обновятся соответствующим образом.
У меня естьпопытался вызвать reloadGrid в gridComplete и loadComplete, но ни один из них не сработал.Что вызывается, когда я выполняю другие действия, которые заставляют страницу обновляться?
Вот моя сетка:
$(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 });
Код сервера:
[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] },
... ]
}