我是 jqGrid 的新手,一直在努力在 MVC3 项目中使用它,但没有成功。我已经下载了演示并浏览了代码,但是在我的项目中实现 jqGrid 失败并出现以下错误。
The parameters dictionary contains a null entry for parameter 'page' of non-nullable type
'System.Int32' for method 'System.Web.Mvc.JsonResult Index(System.String, System.String,
Int32, Int32)' in 'kags.Web.Controllers.DeptController'. An optional parameter must
be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters
以下是控制器中的代码:
public JsonResult Index(string sidx, string sord, int page, int rows){
var ascending = sord.StartsWith("asc") ? true : false;
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int startRow = (pageIndex * pageSize) + 1;
var depts = ListAll()
.Skip(startRow)
.Take(pageSize).AsQueryable()
.OrderByField(sidx, ascending);
int totalRecords = depts.Count();
int totalPages = (int) Math.Ceiling((float) totalRecords/ (float) pageSize);
var jsonData =
new { total = totalPages,
page = page,
records = totalRecords,
rows = (from d in depts
select new {
i = d.Id,
cell = new string[]{d.Name, d.Version.ToString()}
})
.ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
以下是index.cshtml
<h2>Available Depts</h2>
<div>
<table id="List" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="pager" class="scroll" style="text-align:center;"></div>
</div>
jqGrid 的 css 和脚本文件正在从共享的 _Layout.cshtml 加载,并以正确的顺序排列。
以下支持 jqGrid 的脚本位于单独的脚本文件中
jQuery(document).ready(function () {
("#List").jqGrid({
url: '/Dept/Index/',
datatype: 'json',
mtype: 'POST',
colNames: ['Name'],
colModel: [{ name: 'Name', index: 'Name', width: 300, align: 'left'}],
pager: jQuery('#pager'),
rowNum: 10,
rowList: [5, 10, 20, 50],
sortname: 'Id',
sortOrder: "desc",
viewrecords: true,
caption: 'Dept List'
});
});
我查看了其他示例,但仍然无法找到出现错误的原因。
如果有人能指出正确的方向来解决错误并设法填充网格,我将不胜感激。