0

我在我的 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。在我的视图模型中,我对该值使用订阅事件。请参阅下面的代码

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;
            });

此代码正确设置值,但前提是组合框失去焦点。我应该怎么办?

4

2 回答 2

0

试试这样的 $("#selFrameworkVersion").attr("autofocus",true);

于 2013-06-06T14:36:52.240 回答
0

此处的 ComboBox 演示中,他们使用一个index属性来设置最初选择的项目。不知道你是否可以在你的情况下尝试。否则,还有一个.select() 方法,您可以在小部件上调用该方法来设置所选项目。

它没有根据value. 也许这是一个错误。

于 2013-01-30T21:47:58.123 回答