与kendo组合框的问题

时间:2013-01-30 19:06:24

标签: javascript jquery kendo-ui

我已经在我的html中定义了kendocombox,如下所示

<input  id="selFrameworkVersion" style="width: 210px" data-bind="kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data:  $root.versionListByProductType, value:  $root.editFrameworkVersion, optionsCaption: 'Select Version...'  }" />

组合框正确加载并设置值,但是当它没有将焦点设置到列表中的正确项目时。见下图 Kendobox

您可以看到值为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;
            });

此代码正确设置值,但仅在组合框丢失焦点时才设置。我该怎么办?

2 个答案:

答案 0 :(得分:0)

ComboBox demo here中,他们使用index属性设置最初选择的项目。不确定你是否可以在你的情况下尝试。否则,您还可以在窗口小部件上调用.select() method来设置所选项目。

它没有根据value设置所选项目,这似乎很奇怪。也许这是一个错误。

答案 1 :(得分:0)

尝试这样的事情 $( “#selFrameworkVersion”)ATTR( “自动聚焦”,真);