如何仅使用javascript清除/重置Kendo DropDownList?

时间:2013-09-08 21:47:21

标签: javascript kendo-ui kendo-asp.net-mvc

我有一个包含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);
}

2 个答案:

答案 0 :(得分:7)

使用cascading dropdown功能可能更容易。

当您更改dataSource时,它会删除下拉项,但您还需要清除所选文本并禁用该框,方法是:

dropdownBox.setDataSource(dataSource);
dropdownBox.text('');
dropdownBox.enable(false);

答案 1 :(得分:1)

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