首页 文章

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

提问于
浏览
3

我有一个包含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在应用时不刷新/重新绑定 . 除了已选择的选项之外的所有选项都将被删除,但如何删除之前选择的选项?我希望它再次“空” .

谢谢 .

---- Solution I used ----

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 回答

  • 6

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

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

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

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

相关问题