【问题标题】:How do I clear / reset a Kendo DropDownList with only javascript?如何仅使用 javascript 清除/重置 Kendo DropDownList?
【发布时间】:2013-09-08 21:47:21
【问题描述】:

我有一个包含 3 个选项的 Kendo DropDownList (name=Function)。选择一个选项时,它会触发AJAX调用以获取数据以填充不同的DropDownList(name =父母)。这按预期工作。但是,如果用户随后将原始 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 = []”给我带来了问题。就像“父母” 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);
}

【问题讨论】:

  • 我还发现 dropdownBox.value(-1) 不起作用。一旦选择了一个值,似乎不可能“取消选择”所有值。

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


【解决方案1】:

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

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

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

【讨论】:

  • 这是我错过的文本重置。我想我认为重置数据源会重置所有内容,但这似乎是不正确的。在我的代码中,我还重置了 dropdownBox.value(),因为它似乎也保留了该信息。谢谢分享。
【解决方案2】:

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

【讨论】:

  • 我猜是把数据源设置为“空或清除”让我失望?我不应该能够在不使用级联事件的情况下设置这样的数据源吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 2013-12-19
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
相关资源
最近更新 更多