我已经在我的html中定义了kendocombox,如下所示
<input id="selFrameworkVersion" style="width: 210px" data-bind="kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data: $root.versionListByProductType, value: $root.editFrameworkVersion, optionsCaption: 'Select Version...' }" />
组合框正确加载并设置值,但是当它没有将焦点设置到列表中的正确项目时。见下图
您可以看到值为5.5.1,但它设置为5.4,这是列表中的第一项。 我现在知道它为什么会发生。在我的组合框中,您可以看到我将值设置为$ root.editFrameworkVersion。在我的视图模型中,我对该值使用subscribe事件。见下面的代码
self.editFrameworkVersion.subscribe(function (value) {
var combobox = $("#selFrameworkVersion").data("kendoComboBox");
var callback = function (data) {
self.editOnlyAlternativeVersions(self.versionListByProductType());
combobox.select(function (dataItem) {
return dataItem.Name === value;
});
self.editOnlyAlternativeVersions.remove(function (data) {
return parseInt($("#selFrameworkVersion").attr('value')) === parseInt(data.Id());
});
};
loadVersionListByProductType(self.editProductType().Id(), callback);
});
我使用此订阅事件来做一些逻辑。在这种情况下,我正在调用WCF服务,该服务在该组合框中再次加载值,这就是为什么它总是设置为第一个值。但是我需要为某些逻辑调用该服务。然后我在上面已经看到的订阅事件中添加了代码
combobox.select(function (dataItem) {
return dataItem.Name === value;
});
此代码正确设置值,但仅在组合框丢失焦点时才设置。我该怎么办?
答案 0 :(得分:0)
在ComboBox demo here中,他们使用index
属性设置最初选择的项目。不确定你是否可以在你的情况下尝试。否则,您还可以在窗口小部件上调用.select() method来设置所选项目。
它没有根据value
设置所选项目,这似乎很奇怪。也许这是一个错误。
答案 1 :(得分:0)
尝试这样的事情 $( “#selFrameworkVersion”)ATTR( “自动聚焦”,真);