そのためにはコンボストアを使わなければならないと思います。コンボには、プロパティと値でストアを簡単に検索するプライベートfindRecord
メソッドがあります。ソースコード自体に例があります(Combo.jsの1119行目)。
1)これに基づいて、選択したインデックスを次のように見つけることができます。
var v = combobox.getValue();
var record = combobox.findRecord(combobox.valueField || combobox.displayField, v);
var index = combobox.store.indexOf(record);
2)または、コンボ、選択されたレコード、およびそのインデックスをパラメーターとして使用して発生する「select」イベントにバインドすることもできます。
3)ビューのgetSelectedIndexes()にアクセスすることもできますが、それが良い解決策ではないかと思います(常に利用できるかどうかはわかりません)。
最後に、コンボボックスオブジェクトを拡張したい場合は、これでうまくいくと思います(最初のソリューションを使用する場合):
Ext.override(Ext.form.ComboBox({
getSelectedIndex: function() {
var v = this.getValue();
var r = this.findRecord(this.valueField || this.displayField, v);
return(this.store.indexOf(r));
}
});