Прочитав об элементе управления JQGrid, я решил, что было бы хорошо использовать его в одном из моих веб-приложений ASP.Net MVC 3.
Сначала я следовал руководству Фила Хакса http://haacked.com/archive/2009/04/14/using-jquery-grid-with-asp.net-mvc.aspx, и все это хорошо. Затем я попытался реализовать что-то подобное в своем приложении, с той лишь разницей, что я использую Linq To Entities.
На странице My View импортированы все классы 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>
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);
}
Когда я запускаю это, код падает со следующей ошибкой
LINQ to Entities does not recognize the method 'System.String ToString()' method
Кто-нибудь знает, как исправить эту ошибку? И также, правильно ли я делаю это или мне следует делать это иначе, чем объяснение Фила Хаака, поскольку он использует Linq to SQL?
Любая обратная связь будет очень признательна.
Спасибо, ребята.