JqG​​rid不显示数据

时间:2011-11-09 16:23:53

标签: c# json asp.net-mvc-3 jqgrid jqgrid-asp.net

问题在于,在开发应用程序时,我做了几次运行测试,并且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);
        }

2 个答案:

答案 0 :(得分:1)

sb.Append("<cell>");
sb.Append("<! [CDATA [" + g.Name + "]");
sb.Append("]> </ cell>");

我遇到了同样的问题。展出的jqgrid不返回XML。我注意到注册表数据库有一些特殊字符,如“&amp;”。问题是浏览器。通过将CDATA标记字段以XML格式返回来决定如下。

答案 1 :(得分:0)

这不是一个直接的答案,但如果它在本地服务器下工作,它应该在远程服务器下工作,因为远程站点具有相同或兼容的服务。如果你所做的就是将应用程序移动到远程服务器,那么看起来你的url路径设置不正确。

“GridData”似乎指向应用所在的文件夹。

对此未答复感到抱歉。我会像你一样在你的帖子里写下一张便条,而verofairy已经这样做但我不知道该怎么做。

另外,如果你认为我离开基地,只需删除我的答案。