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

时间:2014-06-27 07:23:52

标签: javascript json nested kendo-grid

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

https://stackoverflow.com/a/24441318/535556

一切正常,直到我点击"添加新行"按钮。

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

"未捕获的TypeError:无法读取属性' street'未定义"

我想问一下如何正确格式化数据以获取具有更新数据的嵌套JSON对象?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:4)

当您在没有为dataSource定义模式模型的情况下添加新行时,正在创建的对象还没有"地址"领域。带有" 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: {} },
                },
            },
        },

        ...
    }),

});

现在,当您添加新行时,绑定对象"地址"字段将是{}。 " street"," city"和"州"字段当然是未定义的,但它们的父对象"地址"定义了IS,以便在访问它的字段时不会看到和出错。