当我们更改数据源时,Kendo-ui组合框中的未定义值

时间:2017-02-14 22:18:48

标签: kendo-ui

当我们更改kendo ui组合框的数据源时,下拉列表中的所有值都显示未定义的值。我们正在为多选做同样的事情,它工作正常。是否有我们遗漏的东西,或者它只是控制中的一个错误。我们尝试了几个版本,它们都显示了相同的问题。我们的数据源结构可能会发生变化,因此必须更改显示文本和数据值。

//Sample code we are doing when we change the data source.
var combo = $("#fabric").data("kendoComboBox");
combo.setDataSource([
  { text2: "test1", value2: "1" },
  { text2: "test2", value2: "2" }
]);
combo.setOptions({dataTextField: "text2",dataValueField: "value2"});
combo.refresh();

See example here

  • 单击更改数据源按钮,查看第一个组合中的值。
  • 下拉列表显示未定义的值,但是当我们在列表中选择一个时,它会正确显示...

1 个答案:

答案 0 :(得分:0)

首先,setOptions文档告诉我们,此方法的实现因每个小部件而异: http://docs.telerik.com/kendo-ui/api/javascript/ui/widget#methods-setOptions

因此,基本上setOptions仅支持对窗口小部件配置的一些基本更改(例如" min"," max"对于数字输入),并且每个窗口小部件都有所不同。遗憾的是,无法确定窗口小部件的哪些属性可以修改,哪些属性不可以。

在更改窗口小部件的dataSource(或更改Grid窗口小部件的列等)等主要情况下,我建议重新创建整个窗口小部件。这是唯一可靠的方式,因为幕后可能会发生很多魔法,而我们并不知道。

您需要取消选择该项,以清除输入值。然后销毁小部件,并使用新配置再次挂钩到输入。

$("#get").click(function() {

    var combo = $("#fabric").data("kendoComboBox");
    combo.select(-1);
    combo.destroy();

    $("#fabric").kendoComboBox({
        dataTextField: "text2",
        dataValueField: "value2",
        dataSource: [
          { text2: "test1", value2: "1" },
          { text2: "test2", value2: "2" }
        ]
    });

});