【问题标题】:Kendo Grid: add new row with nested object stopped workingKendo Grid:添加新行,嵌套对象停止工作
【发布时间】:2014-06-27 07:23:51
【问题描述】:

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

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

在我单击“添加新行”按钮之前,一切正常。

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

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

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

非常感谢您的建议。

【问题讨论】:

    标签: javascript json nested kendo-grid


    【解决方案1】:

    当您在未定义数据源的模式模型的情况下添加新行时,正在创建的对象还没有“地址”字段。具有“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: {} },
                    },
                },
            },
    
            ...
        }),
    
    });
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多