6

我有一个包含 3 个选项的 Kendo DropDownList (name=Function)。选择一个选项后,它会触发AJAX调用以获取数据以填充其他dropdownlist(name = parters)。这按预期工作。但是,如果用户随后将原始 DropDownList“功能”更改回不同的选择,我需要清除/重置(删除所有选项)并禁用“父母”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 = []”给我带来了问题。就像“父母” 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);
}
4

2 回答 2

8

使用级联下拉功能可能更容易。

当您更改数据源时,它会删除下拉项,但您还需要清除选定的文本并禁用该框,方法是调用:

dropdownBox.setDataSource(dataSource);
dropdownBox.text('');
dropdownBox.enable(false);
于 2013-09-09T00:06:34.043 回答
1

如果您已经为父级和子级下拉定义了数据源,那么您可以在子级中使用 cascadeFrom('parent') 方法并设置一个可以标识为 null 或 clear 的值。

于 2013-09-08T22:12:02.157 回答