我将Combobox绑定到一个复杂的Object,绑定使得ID字段可用作此对象的直接属性,但Text属性来自子对象属性。
我已经能够配置它正确显示值, 但遇到问题以指定optionLabel说“select”无法指定Parent.Childproperty获取运行时错误(Uncaught 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:
}
}
答案 0 :(得分:1)
要回答您的第一个问题:如果在此处创建对象会导致错误,请使用optionLabel作为字符串:
optionLabel: "--- Select ---",
这是JSFiddle的工作:http://jsfiddle.net/a6Ek2/11/
要回答第二个问题,只需使用dataSource.schema
解析json中的非复杂对象。本主题中的更多内容:How can I use nested Json to populate Kendo UI grid?。网格官方不处理复杂的数据对象。但是如果你想尝试一下,你只能在模型中说明父对象,例如:
fields: {
ABCD_PK: { editable: false },
Parent: { editable: true },
}
如果你仍然遇到问题,只需更新这个JSFiddle并显示它的位置。我会尝试改进我的答案。