对象的jqGrid JSON表示法

时间:2012-05-23 23:15:55

标签: json jqgrid notation

有!
我的jqGrid中有一列是空的。
但我检查了Chrome控制台上的对象,那很好。

colModel定义

colModel:[
    {name:'id',index:'id', width:55,editable:false,editoptions:{readonly:true,size:10},hidden:true},
    {name:'firstName',index:'firstName', width:100,searchoptions: { sopt: ['eq', 'ne', 'cn']}},
    {name:'lastName',index:'lastName', width:100,editable:true, editrules:{required:true}, editoptions:{size:10}},
    {name:'books[0].nome',index:'books[0].nome', width:100,editable:true, editrules:{required:true}, editoptions:{size:10}},
    {"formatter":"myfunction", formatoptions:{baseLinkUrl:'/demo/{firstName}|view-icon'}}
]

JSON响应

{
    "total": "10",
    "page": "1",
    "records": "3",
    "rows": [
        {
            "id": 1,
            "firstName": "John",
            "lastName": "Smith",
            "books": [{"nome": "HeadFirst"}]
        },
        {
            "id": 2,
            "firstName": "Jane",
            "lastName": "Adams",
            "books": [{"nome": "DalaiLama"}]
        },
        {
            "id": 35,
            "firstName": "Jeff",
            "lastName": "Mayer",
            "books": [{"nome": "Bobymarley"}]
        }
    ]
}

chrome console inspect object

rowdata.books[0].nome
"HeadFirst"

任何人都知道哪里有可能的技巧?

韩国社交协会!

2 个答案:

答案 0 :(得分:1)

您应该将name colModel属性的值仅用作JavaScript中可用作属性名称的名称和CSS ID名称。因此name:'books[0].nome'的使用并不是一个好主意。

要解决您的问题,您可以使用jsonmap。例如,您可以使用点名称转换:

{name: 'nome', jsonmap: 'books.0.nome', ...

在更复杂的情况下,您可以将函数用作jsonmap的值。例如

{name: 'nome', jsonmap: function (item) {
        return item.books[0].nome;
    }, ...

您可以在其他旧答案中找到更多有关jsonmap用法的代码示例:herehereherehere,{{ 3}}

答案 1 :(得分:0)

name旨在成为行的唯一名称,而不是对JSON对象的引用。来自jqGrid colModel options documentation

  

在列的网格中设置唯一名称。此属性是必需的。除了用作属性/事件名称的其他单词外,保留字(不能用于名称)包括subgrid,cb和rn。

您还可以观察grid.base.js.name的使用方式 - 例如:

var nm = {},
...
nm = $t.p.colModel[i].name;
...
res[nm] = $.unformat.call($t,this,{rowId:ind.id, colModel:$t.p.colModel[i]},i);

无论如何,为了回到你的问题,我认为通过直接传递书籍名称 - 作为字符串而不是对象 - 并通过名称引用它作为bookName之类的东西,你会有更好的运气。