我有一个jqGrid处理有嵌套对象的JSON数据。我正在使用jsonmap设置colmodel,它工作正常;但是当我尝试编辑一行时,传递给服务器的JSON只包含jsonmap属性而不是整个对象,所以它无法将JSON映射到Java对象。
JSON看起来像这样:
{'id': 1,
'name': 'blah',
'importantData':
{'importantDataId': 145,
'importantDataName': 'bleh'}
}
jqGrid colmodel如下所示:
{name:'id', label:'ID', editable: false},
{name:'name', label:'Name', editable: true},
{name:'importantData_name', label:'Important Data', jsonmap: 'importantData.importantDataName', editable: false}
请注意,importantData不可编辑,但必须在网格和表单中显示。
正如我所写,这很好用,我看到“bleh”作为“重要数据”列中的值。 当我点击导航栏网格的编辑按钮时,我看到用当前值编辑数据的表单。 ID未显示(因为它不可编辑),并且importantData显示为“bleh”。我更改了表单中的名称并保存,发送到服务器的JSON如下所示:
{'id': 1,
'name': 'newName',
'importantData_name', 'bleh'}
服务器无法解析此JSON,因为它希望接收整个对象importantData或至少其ID。
我已经配置了一个serializeEditData函数来从网格中检索整个对象,并将整个对象或de ID添加到JSON中,但是我无法获取整个importantData对象。有什么想法吗?
提前致谢!
答案 0 :(得分:0)
我所做的是使用jqGrid的serializeEditData方法并将其设置为覆盖importantData_name。 它是这样的:
serializeEditData: function (postData) {
postData.importantData = myImportantData;
var data = JSON.stringify(postData, function(key, value) {
if(key == importantData_name) {
return undefined;
}
}
}
使用此代码,我避免使用" importantData_name"要包含在de JSON中,我将整个对象包含一个新属性" importantData"。 我必须在加载jqGrid时保存整个对象,以便在此时使用它。
希望这有助于其他人。