Я использую asp.net mvc для создания веб-страницы, которая отображает jqGrid для данных в моей таблице azure.Сетка будет вызывать мой контроллер и, используя отладчик, я могу визуально убедиться, что данные генерируются правильно.Проблема заключается в том, что как только данные возвращаются в виде строки JSON, jqGrid выдает эту ошибку:
b.jgrid.getAccessor(p, d.cell) is undefined
http://localhost:54758/jquery.jqGrid.min.js
Line 65
Я искал документацию в Интернете, но не смог вернуть ничего, кроме того, что выглядит как снимки репозитория,Я сократил свой код, чтобы только один столбец данных (показанный ниже) возвращался в виде строки, но все еще ничего.
Если я добавлю строку "datatype: 'local'" в мои параметры jqGrid, ошибка не будет выдана.Тем не менее, данные по-прежнему не отображаются.Ни один из других вопросов, предложенных в «Похожие вопросы», не решил мою проблему.Данные - это просто поле Id и простая строка C #.
Ниже приведено содержимое файла aspx, используемого для визуализации jqGrid:
<asp:Content ID="Content2" ContentPlaceHolderID="HeadContent" runat="server">
<%--Must load language tag BEFORE script tag--%>
<script src="grid.locale-en.js" type="text/javascript"></script>
<script src="jquery.jqGrid.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery("#list").jqGrid({
autowidth: true,
url: '/HouseData/GridData/',
datatype: 'local', <---instead of 'local' I also tried 'jsonstring'
mtype: 'POST',
colNames: ['House Name'],
colModel: [
{ name: 'houseName', index: 'houseName', key: true, width: 80, align: 'right', hidden: false }],
pager: jQuery('#pager'),
rowNum: 20,
rowList: [5, 10, 20, 50],
sortname: 'houseName',
sortorder: "desc",
height: 400,
viewrecords: true,
imgpath: ''
});
});
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<div id="main">
<h2><a href="#">Show House Name</a></h2>
<div class="disignBoxFirst">
<div class="boxContent">
<%: Html.Partial("HouseDataSearch") %>
</div>
</div>
<hr />
<table id="list" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="pager" class="scroll" style="text-align:center;"></div>
</div>
</asp:Content>
Функция, используемая для создания строки json, содержащейся в файле C # "HouseDataController.cs", представлена ниже (изначально у меня не было опции «datatype» в файле aspx, показанном выше для jqGrid):
public JsonResult GridData(string sidx, string sord, int page, int rows, string houseName)
{
//Setup values to return to the view for display of user entered values
ViewData["HouseName"] = houseName;
//Get table data
CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurationSetting("ConnectionString");
ReportStorageDataServiceContext storageContext = new ReportStorageDataServiceContext(storageAccount.TableEndpoint.ToString(), storageAccount.Credentials);
int houseCount = 0;
IQueryable<HouseDataModel> houses = storageContext.CreateQuery<HouseDataModel>("HouseDataTable").Where(h => h.isAvailable == true);
List<HouseDataModel> queryDetails = new List<HouseDataModel>();
foreach (HouseDataModel house in houses)
{
queryDetails.Add(house);
houseCount++;
}
//Figure out paging
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = houseCount;
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
var jsonData = new
{
total = totalPages,
page,
records = totalRecords,
rows = (from house in queryDetails select new { User = house.houseName }).ToArray()
};
return Json(jsonData);
}
Сообщение об ошибке было перехвачено с помощью Firebug.Если это не является конкретным / достаточно подробным или если это было решено в другой теме, пожалуйста, сообщите.
Спасибо!