我有一个包含3个选项的Kendo DropDownList(name = Function)。当选择一个选项时,它会触发ajax调用以获取数据以填充不同的DropDownList(name = Parents)。这符合预期。但是,如果用户然后将原始DropDownList“Function”更改回另一个选项,我需要清除/重置(删除所有选项)并禁用“Parents”DropDownList。
function LoadKendoDropdownContents(dropdownBoxId, data) {
var dropdownBox = $("#" + dropdownBoxId).data("kendoDropDownList");
if (data === "" || data === null || $.isEmptyObject(data)) {
var dataSource = [];
}
else {
var dataSource = data;
}
dropdownBox.setDataSource(dataSource);
}
这真的是“var dataSource = []”给我带来了问题。就像“Parents”DropDownList在应用时不刷新/重新绑定。除了已选择的选项之外的所有选项都将被删除,但如何删除之前选择的选项?我希望它再次“空”。
谢谢。
----我使用的解决方案----
function LoadKendoDropdownContents(dropdownBoxId, data) {
var dropdownBox = $("#" + dropdownBoxId).data("kendoDropDownList");
if (data === "" || data === null || $.isEmptyObject(data)) {
var dataSource = new kendo.data.DataSource({
data: []
});
dropdownBox.text(" --- ");
dropdownBox.value(-1);
}
else {
var dataSource = new kendo.data.DataSource({
data: data
});
dropdownBox.text("[Select]");
dropdownBox.value(-1);
}
dropdownBox.setDataSource(dataSource);
}
答案 0 :(得分:7)
使用cascading dropdown功能可能更容易。
当您更改dataSource时,它会删除下拉项,但您还需要清除所选文本并禁用该框,方法是:
dropdownBox.setDataSource(dataSource);
dropdownBox.text('');
dropdownBox.enable(false);
答案 1 :(得分:1)
如果已为父级和子级下拉列表定义了数据源,则可以在子级中使用cascadeFrom('parent')方法,并设置一个可以标识为null或clear的值。