问题在于,在开发应用程序时,我做了几次运行测试,并且jqGrid工作得非常好,即在本地服务器上一切正常,但现在我在服务器上测试应用程序,它不再起作用,因为所有网格都是空的。我认为这是数据库的问题,但检查了Json字符串,这是正确的。如果我把url:myOrg/Home
网格显示为空,如果我把myOrg/Home/GridData
显示Json格式数据,正确...发生了什么......?为什么数据没有显示在网格中.. ??本地一切都像魅力,我需要任何额外的库到服务器..或什么......?
请帮帮我。
提前致谢。
编辑:
这是我正在使用的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 String的服务器端代码:
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);
}
答案 0 :(得分:1)
sb.Append("<cell>");
sb.Append("<! [CDATA [" + g.Name + "]");
sb.Append("]> </ cell>");
我遇到了同样的问题。展出的jqgrid不返回XML。我注意到注册表数据库有一些特殊字符,如“&amp;”。问题是浏览器。通过将CDATA标记字段以XML格式返回来决定如下。
答案 1 :(得分:0)
这不是一个直接的答案,但如果它在本地服务器下工作,它应该在远程服务器下工作,因为远程站点具有相同或兼容的服务。如果你所做的就是将应用程序移动到远程服务器,那么看起来你的url路径设置不正确。
“GridData”似乎指向应用所在的文件夹。
对此未答复感到抱歉。我会像你一样在你的帖子里写下一张便条,而verofairy已经这样做但我不知道该怎么做。
另外,如果你认为我离开基地,只需删除我的答案。