问题描述
在jqGrid的控制读了之后,我决定这将是很好的在我的ASP.Net MVC 3 Web应用程序之一,使用它。
After reading up on the JQGrid control, I decided it would be good to use it in one of my ASP.Net MVC 3 Web applications.
首先,我跟着菲尔Haacks教程http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx这是所有好。然后我试图实现类似的东西进入我的应用程序,唯一的区别是,我使用LINQ到实体。
Firstly I followed Phil Haacks tutorial http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx which is all good. I then tried to implement something similar into my app, the only difference being, I use Linq To Entities.
我的查看页面的所有CSS和jQuery类进口的,然后我有我的JavaScript函数表,保存数据
My View page has all the css and Jquery classes imported, then I have my JavaScript Function and table which holds the data
<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数据
Then in my controller, I have the following method which is suppose to return the Json data
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);
}
当我运行这一点,code翻倒并出现以下错误
When I run this, the code falls over with the following error
LINQ to Entities does not recognize the method 'System.String ToString()' method
有谁知道如何解决这个问题?而且,我在这方面采取了正确的方法,或者我应该做它从菲尔哈克解释,因为他是使用LINQ to SQL中以不同的方式?
Does anyone know how to fix this error? And also, am I doing this the correct way, or should I be doing it a different way from the Phil Haack explanation since he is using Linq to SQL?
任何反馈将是非常美联社preciated。
Any feedback would be much appreciated.
感谢乡亲。
推荐答案
EF不支持ToString方法,则必须检索数据没有的ToString和格式
EF doesn't support ToString method, you must retrieve the data without ToString and format
这应该工作
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 = query.Select(x => new { x.equipamentID, x.Category.categoryTitle,x.Department.title })
.ToList() // .AsEnumerable() whatever
.Select(x => new {
id = x.equipamentID,
cell = new string[] {
x.equipamentID.ToString(),
x.categoryTitle,
x.title
}})
.ToArray(),
};
return Json(result, JsonRequestBehavior.AllowGet);
}
这篇关于ASP.Net MVC 3的jqGrid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!