JqGrid не показывает данные - PullRequest
0 голосов
/ 09 ноября 2011

Проблема в том, что при разработке приложения я несколько раз тестировал, и 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);
        }

Ответы [ 2 ]

1 голос
/ 01 октября 2012
sb.Append("<cell>");
sb.Append("<! [CDATA [" + g.Name + "]");
sb.Append("]> </ cell>");

У меня была такая же проблема.Выставленная jqgrid не возвращает XML.Я заметил, что в базе данных реестра есть некоторые специальные символы, такие как «&».Проблема была в браузере.Решил следующим образом, поместив возвращаемое поле тега CDATA в XML.

0 голосов
/ 10 ноября 2011

Это не прямой ответ, но если он работает на локальном сервере, он должен работать на удаленном сервере, если на удаленном сайте есть те же или совместимые службы.Если все, что вы сделали, это переместили приложение на удаленный сервер, может показаться, что у вас неверно задан путь URL к удаленному серверу.

«GridData» указывает на папку, в которой находится ваше приложение..

Извините за отсутствие ответа.Я бы поместил это в качестве заметки под вашим постом, как вы и verofairy сделали, но я пока не знаю, как это сделать.

Кроме того, если вы думаете, что я далеко от базы, просто удалите мойответить.

...