有!
我的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"
任何人都知道哪里有可能的技巧?
韩国社交协会!
答案 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;
}, ...
答案 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
之类的东西,你会有更好的运气。