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 に答える