2

Extjs 4.2 を使用しており、ページにコンボ ボックス フィールドがあります。このページを更新するとき、選択した値をコンボ ボックスに表示する必要があります。静的データを使用すると正常に動作しますが、データベースからデータをロードすると、データが表示されますが、選択したコンボ ボックスの値 (ラベルではない) が表示されます。

コンボ ボックスのメソッドを使用して回避策を実行selectしましたが、選択した値を取得するためにストアを反復処理する必要があります。store の値は 1 ではなく 100 から始まりselect、コンボ ボックスのメソッドはリストのインデックスを使用します。

以下は確認できるコードですが、これは複数のコンボ ボックスでは機能しません。

var specilizationComboBox = Ext.getCmp("doctorMasterVO.specilizationFkId");

var specilizationValue = 0;

specilizationStore.each(function (record) {
    if (record.get('value') != dataRead.dataVO.doctorMasterVO.specilizationFkId) {
        specilizationValue = specilizationValue + 1;
    }
    else {
        return false; 
    }
});

specilizationComboBox.select(specilizationComboBox.store.data.items[specilizationValue]);

ストア全体を反復するのは良い考えではないため、これを行う他の方法があることを教えてください。

4

1 に答える 1

0

これらの方法をチェックしてください:

探す

検索方法

検索レコード

findExact

基本的にあなたがやりたいことは次のようなものです:

var myId = dataRead.dataVO.doctorMasterVO.specilizationFkId;
var record = store.findRecord("id", myId);
specilizationComboBox.select(record);

「id」は、ストアで一致を見つけようとしているフィールドの名前です。レコードが存在しない場合、またはストアが適切にロードされていない場合、myRecord は null になる可能性があることに注意してください。

ストアがロードされていることを確認するには、ロード ハンドラで上記のコードを実行できます。

specilizationComboBox.getStore().load({
    scope: this,
    callback: function(records, operation, success) {
      //code goes here
    }
});

ストアが読み込まれたかどうかわからない場合は、getCountメソッドを確認できます。

于 2013-07-08T08:00:40.957 に答える