Drop down menu 如果使用数据绑定设置选定值,则Kendo UI Dropdownlist客户端筛选器不工作

Drop down menu 如果使用数据绑定设置选定值,则Kendo UI Dropdownlist客户端筛选器不工作,drop-down-menu,filter,kendo-ui,transport,databound,Drop Down Menu,Filter,Kendo Ui,Transport,Databound,问题是在使用Kendo UI Dropdownlist和数据绑定方法设置加载时的选定值时 在DataBound方法中设置该值的原因是为了确保传输已返回dropdownlist的数据项,以防止竞争条件失败。这在下面的静态示例中没有演示,但我的数据集来自传输服务器端调用 设置dropdownlist的选项过滤器:“startswith”对于简单的客户端过滤非常有效,但是由于使用数据绑定,出现了一个问题。关于这方面的文档很少,但是当dropdownlist初始化时,以及当任何方法对其采取操作(包括过滤

问题是在使用Kendo UI Dropdownlist和数据绑定方法设置加载时的选定值时

在DataBound方法中设置该值的原因是为了确保传输已返回dropdownlist的数据项,以防止竞争条件失败。这在下面的静态示例中没有演示,但我的数据集来自传输服务器端调用

设置dropdownlist的选项过滤器:“startswith”对于简单的客户端过滤非常有效,但是由于使用数据绑定,出现了一个问题。关于这方面的文档很少,但是当dropdownlist初始化时,以及当任何方法对其采取操作(包括过滤)时,都会调用dataBound

通过在inspector工具中放置调试器,我能够观察到filter方法的工作情况,然后再次命中dataBound方法并将其设置为初始化值。其结果是,过滤器似乎完全失败了

请参见下面的示例。要重现问题,请尝试使用dropdownlist的过滤功能,键入“Apple”,然后观察发生了什么

$(“#dropdownlist”).kendoDropDownList({
数据来源:[“苹果”、“橙子”],
过滤器:“startswith”,
数据绑定:函数(e){
$(“#dropdownlist”).data('kendoDropDownList').value(“橙色”);
}
});

在研究DOM中的dropdownlist之后,我找到了一个解决方案,尽管可能有点不成熟,允许数据绑定在传输加载列表后初始化并设置值,防止它劫持筛选方法

$(“#dropdownlist”).kendoDropDownList({
数据来源:[“苹果”、“橙子”],
过滤器:“startswith”,
数据绑定:函数(e){
如果(e.sender.filterInput.val()=“”){
$(“#dropdownlist”).data('kendoDropDownList').value(“橙色”);
}
}
});

要补充的是,仅检查filterInput值也会在每次打开下拉列表后将该值设置回初始值。因此,更改该值后,无论是否将其更改为“苹果”,只要打开下拉列表,它都将始终重置为“橙子”

添加另一个检查!this.value()

$(“#dropdownlist”).kendoDropDownList({
数据来源:[“苹果”、“橙子”],
过滤器:“startswith”,
数据绑定:函数(e){
如果(!this.value()&&e.sender.filterInput.val()=“”){
$(“#dropdownlist”).data('kendoDropDownList').value(“橙色”);
}
}
});