我认为您必须为此使用组合商店。Combos 有一个私有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)或者您可以将自己绑定到使用组合触发的“选择”事件,选择的记录及其索引作为参数。
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));
}
});