我将说明我将如何做到这一点,我认为这也适用于您(我构建了许多带有 MVC3 后端的 jqGrid。
您已经有了 HTML 组件,或者您可以使用类似的东西。
<div id="ExampleGridContainer" >
<table id="ExampleGridName" class="scroll" cellpadding="0" cellspacing="0" ></table>
<div id="ExampleGridPager" class="scroll" style="text-align:center;"></div>
</div>
然后对于您的 Javascript,您需要包含对两者的引用(在此示例中,我使用英语作为我的位置)
<script src="@Url.Content("~/Scripts/trirand/i18n/grid.locale-en.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/trirand/jquery.jqGrid.min.js")" type="text/javascript"></script>
如果它是您的 _Layout.chtml 之一或其中之一,您可以将其包含在您的页面上
然后在视图的脚本部分中,您可以构建类似于
<script type="text/javascript">
$(document).ready(function () {
//initalize jqGrid
$('#ExampleGridName').jqGrid({
datatype: 'json',
url: '/ControllerName/ActionName',
colNames: [ 'ColumnOneName', 'ColumnTwoName']
colModel: [
{ name: 'ColumnOneName', //etc}
{ name: 'ColumnTwoName', //etc}
],
pager: $('#ExampleGridPager'),
rowNum: 5,
rowList: [5,10,20],
sortname: 'ColumnOneName',
//etc
//rest of grid settings
});
});
</script>
现在在上面的示例中datatype: 'json'
,url:
当显示视图并处理 ready 事件时填充属性,您的网格将转到 URL 并查找数据。如果您想稍后在另一个操作之后执行此操作,或者动态重复它,您可以从datatype: 'local',
and nourl:
属性开始。
当需要设置这些属性并重新加载网格时,您可以:
//set the `datatype:` and `url:` properties and load the grid
$('#ExampleGridName').jqGrid('setGridParam', { datatype: 'json', url: '/ControllerName/ActionName' }).trigger('reloadGrid', [{ page: 1}]);
//reload the grid if the `datatype:` and `url:` properties are already configured
$('#ExampleGridName').jqGrid().trigger('reloadGrid', [{ page: 1}]);
在您的控制器上,您将拥有一个能够响应数据请求并以 JSON 格式生成结果的操作。这绝不是一个基本示例,说明如何使用具有动态加载的 MVC3 jqGrid 启动和运行,并且还有许多更高级的过滤、搜索等选项。
public ActionResult ActionName(string sidx, string sord, int page, int rows, bool _search, string filters)
{
//load data from somthing,
IQuerable<Object> results = database.getresults //whatever you want to populate a set of data really
int totalRecords = results.Count();
var pagedResults = results.OrderBy(sidx + " " + sord).Skip((page -1) * rows).Take(rows);
var jsonData = new
{
total = (totalRecords + rows - 1) / rows,
page = page,
records = totalRecords,
rows = (
from tempValue in pagedResults.ToList()
select new
{
cell = new string[] {
tempValue.ColumnOneValue,
tempValue.ColumnTwoIntValue.ToString(),
//Etc
}).ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}//ActionName
这将是显示 jqGrid 并在其他操作/事件之后与其动态交互的一种非常基本的方式。enter code here