在阅读了 JQGrid 控件之后,我决定在我的一个 ASP.Net MVC 3 Web 应用程序中使用它会很好。
首先,我遵循了 Phil Haacks 教程http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx这一切都很好。然后我尝试在我的应用程序中实现类似的东西,唯一的区别是,我使用 Linq To Entities。
我的视图页面导入了所有 css 和 Jquery 类,然后我有我的 JavaScript 函数和保存数据的表
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery("#list").jqGrid({
url: '/Home/LinqGridData/',
datatype: 'json',
mtype: 'GET',
colNames: ['equipmentID', 'categoryTitle', 'title'],
colModel: [
{ name: 'equipmentID', index: 'equipmentID', width: 40, align: 'left' },
{ name: 'categoryTitle', index: 'categoryTitle', width: 40, align: 'left' },
{ name: 'title', index: 'title', width: 200, align: 'left'}],
pager: jQuery('#pager'),
width: 660,
height: 'auto',
rowNum: 10,
rowList: [5, 10, 20, 50],
sortname: 'Id',
sortorder: "desc",
viewrecords: true,
imgpath: '/scripts/themes/coffee/images',
caption: 'My first grid'
});
});
<h2>My Grid Data</h2>
<table id="list" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="pager" class="scroll" style="text-align:center;"></div>
然后在我的控制器中,我有以下方法,假设返回 Json 数据
public ActionResult LinqGridData(string sidx, string sord, int page, int rows)
{
AssetEntities context = new AssetEntities();
var query = from e in context.Equipments
select e;
var count = query.Count();
var result = new
{
total = 1,
page = page,
records = count,
rows = (from e in query
select new
{
id = e.equipmentID,
cell = new string[]
{
e.equipmentID.ToString(),
e.Category.categoryTitle,
e.Department.title
}
}).ToArray()
};
return Json(result, JsonRequestBehavior.AllowGet);
}
当我运行它时,代码会出现以下错误
LINQ to Entities does not recognize the method 'System.String ToString()' method
有谁知道如何解决这个错误?而且,我这样做是正确的方式,还是应该以不同于 Phil Haack 的解释的方式来做,因为他使用的是 Linq to SQL?
任何反馈将不胜感激。
谢谢各位。