如何允许kendo网格绑定到未定义的字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何允许kendo网格绑定到未定义的字段相关的知识,希望对你有一定的参考价值。

我有这个json对象

{
  id: string,
  name: string,
  category: {
    id: string
    name: string,         
  }
}

我想要有一个绑定到productCategory.name的列。但是该字段可以为空。当productCategory为null / undefined时,kendo将抛出错误。我怎么能告诉kendo如果字段未定义,只显示空字符串?

编辑

以下是我的示例数据

[{
   "id":1,
   "name":"Spaghetti",
   "category":{
      "id":"1",
      "name":"Food"
}},
{
   "id":2,
   "name":"Coca-cola",
   "category":null
}}]

下面是我的kendo数据源

var kendoDataSource = new kendo.data.DataSource({
        schema: {
            data: "data",
            total: "total",
            model: {
                id: "id",
                fields: {
                    id: { type: "string" },
                    name: { type: "string" },
                    "category.name": { type: "string" }                
                }

            }
        }
    });

上面的数据会抛出“未定义”错误,因为第二个产品没有类别。

答案

尝试使用空对象而不是null

创造了一个小提琴,检查这个:

http://jsfiddle.net/Sowjanya51/h930jcru/

另一答案

只需在模型中提供默认值,如下所示:

var kendoDataSource = new kendo.data.DataSource({
        schema: {
            data: "data",
            total: "total",
            model: {
                id: "id",
                fields: {
                    id: { type: "string" },
                    name: { type: "string" },
                    "category.name": { type: "string" },
                    category: { defaultValue: {
                                                id: "",
                                                name: "",         
                                              }
                              }
                }

            }
        }
    });

如果它是null或未定义,这将初始化productCategory。

以上是关于如何允许kendo网格绑定到未定义的字段的主要内容,如果未能解决你的问题,请参考以下文章

使用代码优先模型的 Kendo 网格绑定

即使没有更新数据,如何强制 Kendo 网格更新

Kendo UI MVC——如何获得更灵活的网格自定义命令?

Kendo UI:Kendo 网格的惰性绑定

单击取消后,Kendo网格弹出编辑器不再打开

如何将Kendo UI网格绑定到GraphQLAPI