Tim*_*rke 5 linq asp.net-mvc jquery jqgrid
我是一个jQuery noob,所以我确定我在这里缺少一些简单的东西.
我已经让jqGrid处理了一个从LINQ到实体操作创建JSON数据的操作.但是,当我单击浏览器中的列标题时,行不会排序.上升/下降指示器显示,但没有其他任何事情发生.
必要的JavaScript和CSS链接位于主页面标题中:
<script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> <!-- CSS and JavaScript files for jqGrid to display on Details pages --> <link rel="stylesheet" type="text/css" href="/scripts/jQuery/jqGrid-3.4.4/themes/green/grid.css" title="green" media="screen" /> <script src="/Scripts/jQuery/jqGrid-3.4.4/jquery.jqGrid.js" type="text/javascript"></script> <script src="/Scripts/jQuery/jqGrid-3.4.4/js/jqModal.js" type="text/javascript"></script> <script src="/Scripts/jQuery/jqGrid-3.4.4/js/jqDnR.js" type="text/javascript"></script>
这是我的初始化代码:
// jqGrid setup.
$("#gridlist").jqGrid({
url: '/Contact/GridData',
datatype: 'json',
mtype: 'GET',
colNames: ['ID', 'First Name', 'Last Name', 'Organization'],
colModel: [
{ name: 'id', index: 'id', width: 40, align: 'left', resizable: true },
{ name: 'first_name', index: 'first_name', width: 200, align: 'left', resizable: true, sortable: true, sorttype: "text" },
{ name: 'last_name', index: 'last_name', width: 200, align: 'left', resizable: true, sortable: true, sorttype: "text" },
{ name: 'organization', index: 'organization', width: 300, align: 'left', resizable: true, sortable: true, sorttype: "text"}],
pager: jQuery('#pager'),
rowNum: 5,
rowList: [5, 10, 20, 50],
repeatitems: false,
viewrecords: true,
imgpath: '/scripts/jQuery/jqGrid-3.4.4/themes/green/images',
caption: 'Contacts'
});
这是HTML:
<h3>My Grid Data</h3>
<table id="gridlist" class="scroll" cellpadding="0" cellspacing="0">
</table>
<div id="pager" class="scroll" style="text-align:center;">
</div>
并且,为了完整性,动作方法:
public ActionResult GridData()
{
var page = new { page = 1 };
IEnumerable contacts = _db.ContactSet;
int i = 0;
var rows = new object[contacts.Count()];
foreach (Contact contact in contacts)
{
rows[i] = new { id = contact.ID, cell = new[] { contact.ID.ToString(), contact.First_Name, contact.Last_Name, contact.Organization } };
i++;
}
var result = new JsonResult();
result.Data = new { page = 1, records = 2, rows, total = 1 };
return result;
}
任何想法我在这里缺少什么明显的设置?
有两种基本方法可以处理这个问题。网格可以对数据本身进行排序。我不记得如何打开它,因为我从来没有使用过这个选项。通常,我处理的数据集太大而无法返回页面,因此我使用网格的分页功能。这需要在服务器上进行这种排序,因为网格不会看到整个数据集。
要在服务器上进行分页,请将 sidx 和 sord (都是字符串)参数添加到您的操作中。sidx 将是要排序的列的名称。sord 将是方向,asc 或 desc。
我有一个演示项目,它展示了如何执行此操作(使用 LINQ to Objects)。但使用 LINQ to Entities 几乎是相同的;我在生产/非演示代码中使用 LINQ to Entities。下载演示解决方案并自行查找。
| 归档时间: |
|
| 查看次数: |
18246 次 |
| 最近记录: |