Ошибки Firebug, которые я не могу заставить их исчезнуть - PullRequest
2 голосов
/ 26 декабря 2011

Я получаю эту ошибку в Firebug:
d is undefined [Break On This Error] randId:function(d){return(d?d:b.jgrid....(i,d);if(g)return d;return d.length>

Я использую JqGrid Версия: 4.3.1

Мой метод контроллера выглядит следующим образом:

public JsonResult CategoryList(int page)
    {
        List<CategoryDTO> categories = ServiceUtil.AuctionService.ListCategories();
        List<dynamic> json = new List<dynamic>();

        if (categories != null && categories.Count > 0)
        {
            foreach (CategoryDTO cat in categories)
            {
                json.Add(new { Id = cat.Id, Name = cat.Name, Update = cat.LastUpdate, Regex = cat.ValidationXSD });
            }
        }

        var result = new
        {
            total = 1,
            page = page,
            records = categories == null ? 0 : categories.Count,
            rows = (from cat in categories.Take(10)
                    select
                        new { Id = cat.Id, Name = cat.Name, Update = cat.LastUpdate, Regex = cat.ValidationXSD }
                    ).ToArray()
        };

        return Json(result, JsonRequestBehavior.AllowGet);

    }

Вид такой:

$(document).ready(function () {
    $("#jqgridListCategory").jqGrid({
        url: '/Admin/ManageCategory/CategoryList',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['Id', 'Name', 'LastUpdate', 'RegularExpression'],
        colModel: [{ name: 'Id', index: 'Id', width: 40, align: 'left' }, { name: 'Name', index: 'Name', width: 400, align: 'left' }, { name: 'LastUpdate', index: 'LastUpdate', width: 40, align: 'left' }, { name: 'RegularExpression', index: 'RegularExpression', width: 40, align: 'left'}],
        pager: jQuery('#pager'),
        rowNum: 10,
        rowList: [5, 10, 20, 50],
        sortname: 'Id',
        sortorder: "desc",
        viewrecords: true,
        caption: 'Categories'
    });
}); 

Не могу понять, что не так, есть идеи?

Редактировать 1: использовать последнюю версию jquery 1.7.2.

Редактировать 2: Я не ожидаю, что Regex от контроллера будет просто строкой в ​​представлении

1 Ответ

1 голос
/ 26 декабря 2011

Действие CategoryList создает данные в неправильном формате.Либо вы должны использовать jsonReader, либо изменить код действия CategoryList.

Стандартный формат элементов из части rows ответа сервера должен выглядеть следующим образом

{"id" :"1", "cell": ["cell11", "cell12", "cell13"]}

Если первый столбец Id уникален и может использоваться в качестве идентификатора строки, вместо него можно использовать только массив или строки:

rows = (from cat in categories.Take(10)
        select new[] {
            cat.Id.ToString(),
            cat.Name,
            cat.LastUpdate.ToString(),
            cat.ValidationXSD
        }).ToArray()

В jqGrid выследует добавить key: true в список свойств столбца 'Id' и добавить следующий параметр jqGrid

jsonReader: { cell: "" }

Я рекомендую вам поиграть с демонстрационным проектом из моего старый ответ или с модификацией из другой ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...