Проблема в том, что при разработке приложения я несколько раз тестировал, и jqGrid работал очень хорошо, то есть на локальном сервере все работало нормально, но сейчас я тестирую приложение на сервере, и оно больше не работает, потому что все сетки пусты. Я думал, что это проблема с базой данных, но проверил строку Json, и это правильно. Если я укажу URL: myOrg/Home
сетка отображается пустым, а если я поставлю myOrg/Home/GridData
, то показывает данные формата Json, правильно ... что происходит ... ?? почему данные не отображаются в сетке .. ?? локально все работает как шарм, мне понадобится какая-нибудь дополнительная библиотека на сервере .. или что-то ..?
Пожалуйста, помогите мне.
Заранее спасибо.
EDIT:
Вот JavaScript, который я использую
<script type="text/javascript">
$(document).ready(function () {
var lastsel;
$(function () {
jQuery('#list').jqGrid({
url: '@Url.Action("GridData", "Contacto")',
editurl: '@Url.Action("EditData", "Contacto")',
datatype: 'json',
height: 250,
colNames: ['Id', 'Nombre', 'Teléfono', 'e-mail', 'Empresa'],
colModel: [
{ name: 'Id', index: 'Id', width: 50 },
{ name: 'Nombre', index: 'Nombre', width: 100, sortable: true, editable: true, edittype: "text", editoptions: { size: "15", maxlength: "20"} },
{ name: 'Telf', index: 'Telf', width: 80, editable: true, edittype: "text", editoptions: { size: "10", maxlength: "15"} },
{ name: 'Email', index: 'Email', width: 100, editable: true, edittype: "text", editoptions: { size: "15", maxlength: "20"} },
{ name: 'Empresas', index: 'Empresas', width: 100, editable: true, edittype: "select", editoptions: { dataUrl: '/Contacto/ListaEmpresas/'} }
],
caption: 'Listado de Contactos',
onCellSelect: function (rowid, iCol, cellcontent, e) {
if (rowid && rowid !== lastsel) {
jQuery('#list').restoreRow(lastsel);
lastsel = rowid;
}
jQuery('#list').editRow(rowid, true, iCol);
},
autowidth: true,
rowNum: 10,
rowList: [10, 20, 30],
pager: '#pager',
sortname: 'id',
sortable: true,
loadonce: true,
viewrecords: true,
sortorder: 'asc'
});
jQuery('#list').jqGrid('navGrid', '#pager', { edit: true, add: true, del: true, search: true },
{ url: '@Url.Action("EditData", "Contacto")',
closeAfterEdit: true
},
{ url: '@Url.Action("AddData", "Contacto")',
closeAfterAdd: true,
closeOnEscape: true,
width: 500,
modal: true,
addCaption: 'Añadir nuevo Contacto',
reloadAfterSubmit: true,
drag: true
},
{ url: '@Url.Action("DeleteData", "Contacto")',
closeAfterDelete: true,
deleteCaption: 'Borrar Registro',
reloadAfterSubmit: true
},
{ closeAfterSearch: true,
reloadAfterSubmit: true
}
);
});
});
</script>
А вот код на стороне сервера, который генерирует строку json:
public ActionResult GridData(string sidx, string sord, int? page, int? rows)
{
List<Contacto> contactos = new List<Contacto>();
contactos = ContactoRepository.GetAll().ToList<Contacto>();
int pageIndex = Convert.ToInt32(page) - 1;
int totalrecords = contactos.Count();
//int totalpages = (int)Math.Ceiling((decimal)totalrecords / (decimal)rows);
var jsonData = new
{
sidx = "Id",
sord = "asc",
//total = totalpages,
page = page,
records = totalrecords,
rows = (
from ct in contactos
select new
{
id = ct.Id,
cell = new string[]
{
ct.Id.ToString(),
ct.Nombre,
ct.Telf,
ct.Empresas.Nombre,
}
}).ToArray(),
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}