Kendo Grid:添加嵌套对象停止工作的新行

red*_*rom 1 javascript json nested kendo-grid

我通过这种方式从嵌套 JSON 填充 Kendo 数据网格:

/sf/answers/1710892291/

一切正常,直到我单击“添加新行”按钮。

然后我收到控制台错误消息:

“未捕获类型错误:无法读取未定义的属性‘街道’”

我想问如何正确格式化数据以获得包含更新数据的嵌套JSON对象?

非常感谢您的任何建议。

moo*_*moo 5

当您在没有为数据源定义架构模型的情况下添加新行时,正在创建的对象尚不具有“地址”字段。包含“address.street”的列试图从新对象的“address”字段中获取“street”字段,该字段此时尚未定义,因此会出现错误。

坏消息是模式模型定义并不真正适合嵌套类型。好消息是,您可以定义一个 defaultValue 为 {} 的“地址”字段,并且网格编辑器应该会满意。

$("#myGrid").kendoGridEx({

    ...

    columns: [
        { field: "address.street" },
        { field: "address.city" },
        { field: "address.state" },

        ...

    ],

    dataSource: new kendo.data.DataSourceEx({

        ...

        schema: {
            model: {
                id: "Id",
                fields: {
                    address: { defaultValue: {} },
                },
            },
        },

        ...
    }),

});
Run Code Online (Sandbox Code Playgroud)

现在,当您添加新行时,绑定对象的“地址”字段将为 {}。“街道”、“城市”和“州”字段当然是未定义的,但它们的父对象“地址”已定义,因此在访问其字段时您不会看到错误。