1

我一直在尝试在 JQGrid 中呈现 JSON 数据。我收到以下错误:

Error: b is undefined
Source File: http://localhost:1302/Scripts/jquery.jqGrid.min.js
Line: 23

当我使用未最小化的 JQGrid 源代码时,我看到它对 getAccessor 方法进行了多次调用,并且在最后一次调用时,该方法的第一个参数(obj)被传递了一个未定义的值:

Error: obj is undefined
Source File: http://localhost:1302/Scripts/jquery.jqGrid.src.js
Line: 151

这似乎是导致网格停止渲染的原因,但为什么呢?

呈现的网格显示列标题,但没有内容。网格中的“正在加载...”消息永远不会消失。

我的 JSON 数据如下所示:

{
   "total":"1",
   "page":"1",
   "userdata":{

   },
   "records":"2",
   "rows":[
      {
         "DateOfBirth":"11/04/2012 12:00:00 AM",
         "DisambiguationNote":"Boring guy",
         "FirstName":"Joe",
         "LastName":"Bloggs",
         "MiddleName":"Binkie",
         "PersonId":"1"
      },
      {
         "DateOfBirth":"01/01/2001 12:00:00 AM",
         "DisambiguationNote":"someone else",
         "FirstName":"Edna",
         "LastName":"Edwards",
         "MiddleName":"Edith",
         "PersonId":"8"
      }
   ]
}

我的网格代码如下所示:

$(function () {
    $("#persongrid").jqGrid({
        url: '/Person/List',
        datatype: 'json',
        mtype: 'GET',
        jsonreader: {
            root: "rows",
            page: "page",
            total: "total",
            records: "records",
            repeatitems: false,
            id: "5"  ,
            cell: ""  ,
            userdata: "userdata"
        },
        colModel: [
            { name: 'DateOfBirth', index: 'DateOfBirth',sorttype:'date' },
            { name: 'DisambiguationNote', index: 'DisambiguationNote' },
            { name: 'FirstName', index: 'FirstName' },
            { name: 'LastName', index: 'LastName' },
            { name: 'MiddleName', index: 'MiddleName' },
            { name: 'PersonId', index: 'PersonId',sorttype:'int' }
        ],
        pager: '#persongridpager',
        rowNum: 10,
        rowList: [10, 20, 30],
        viewrecords: true,
        gridview: true,
        caption: 'People'
    });
});

我可以看到正在从 AJAX 请求中检索 JSON 数据,并且我已经非常仔细地通过了 JQGrid 的 JSON 数据指令,但看不出我做错了什么。

任何人都可以帮忙吗?谢谢你。

4

1 回答 1

3

错误很容易,但很难找到:你使用jsonreader代替,jsonReader所以jsonreader将被忽略并使用默认值jsonReader

从demo上可以看出修改后数据读取成功。

顺便说一句,您可以仅指定jsonReader与默认值不同的属性并使用

jsonReader: {
    repeatitems: false,
    id: "5",
}

或者

jsonReader: {
    repeatitems: false,
    id: "PersonId",
}

我添加到演示height: 'auto'选项只是为了提高可见性。

于 2012-05-06T22:38:18.010 回答