1

我将 Combobox 绑定到一个复杂的对象,该绑定使得 ID 字段可用作该对象的直接属性,但文本属性来自子对象属性。

我已经能够对其进行配置以正确显示值,但是在指定选项标签时遇到问题,说“选择”无法指定 Parent.Childproperty 出现运行时错误(未捕获的 TypeError:无法读取未定义的属性 'Childproperty')

如何在模型定义和下面为空选择指定复杂对象?

   $('<input id="DegreeDDL" name="' + options.field + '"/>').appendTo(container).kendoDropDownList({
            autoBind: true,
            serverFiltering: true,
            optionLabel: {
                'Parent.Childproperty': "--- Select ---",
                ABCD_PK: null

            },
            dataSource: {
                transport: {
                    read: {
                        url: function (e) {
                            return "api/Org/XXXXXXXX?abcdPK=" + efgh;
                        },
                        dataType: "json" // <-- The default was "jsonp"
                    }
                },
            },
            dataTextField: "Parent.ChildProperty",
            dataValueField: "ABCD_PK"
        });

在为网格定义模型时也遇到了类似的问题

 var model = {
        id: "ABCD_PK",
        fields: {
            Parent.Child.ChilProperty: 
                }
             }
4

1 回答 1

1

要回答您的第一个问题:如果在此处创建对象会导致错误,请使用 optionLabel 作为字符串:

optionLabel: "--- Select ---",

这是工作 JSFiddle:http: //jsfiddle.net/a6Ek2/11/

要回答您的第二个问题,只需dataSource.schema将您的 json 解析为非复杂对象。本主题中的更多内容:如何使用嵌套 Json 填充 Kendo UI 网格?. Grid 官方不使用复杂的数据对象。但是,如果您想尝试一下,则仅在模型中声明父对象,例如:

fields: {
    ABCD_PK: { editable: false },
    Parent: { editable: true },
}

如果您对此仍有疑问,只需更新此 JSFiddle 并准确显示其位置。我会尝试改进我的答案。

于 2014-01-19T20:50:54.770 回答