【问题标题】:Nested objects in jqGridjqGrid中的嵌套对象
【发布时间】:2014-06-17 21:53:49
【问题描述】:

我有一个处理具有嵌套对象的 JSON 数据的 jqGrid。我正在使用 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}

看到重要数据不可编辑,但必须显示在网格和表单中。

正如我所写,这很好用,我将“bleh”视为“重要数据”列中的值。 当我单击导航栏网格的编辑按钮时,我看到了用当前值编辑数据的表单。 ID 未显示(因为它不可编辑),importantData 显示为“bleh”。我在表单中更改名称并保存,发送到服务器的JSON如下所示:

{'id': 1,
 'name': 'newName',
 'importantData_name', 'bleh'}

服务器无法解析此 JSON,因为它希望接收整个对象 importantData 或至少它的 ID。

我已经配置了一个 serializeEditData 函数来从网格中检索整个对象并将整个对象或 de ID 添加到 JSON 中,但是我无法获取整个 importantData 对象。有什么想法吗?

提前致谢!

【问题讨论】:

    标签: json jqgrid


    【解决方案1】:

    我所做的是使用jqGrid的serializeEditData方法,并将其设置为覆盖importantData_name。 是这样的:

    serializeEditData: function (postData) {
        postData.importantData = myImportantData;
        var data = JSON.stringify(postData, function(key, value) {
            if(key == importantData_name) {
                return undefined;
            }
        }
    }
    

    使用此代码,我避免在 de JSON 中包含“importantData_name”,并且在整个对象中包含了一个新属性“importantData”。 当我加载 jqGrid 时,我必须保存整个对象以便在此时使用它。

    希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 2014-12-20
      相关资源
      最近更新 更多