如何获取ExtJS组合框的选定索引

| 确定ExtJS中ComboBox中当前所选项目的索引的认证方法是什么? ExtJS 3.x和4之间在执行此操作方面有区别吗?
var combo = new Ext.form.ComboBox(config);
var selectedIndex = combo.selectedIndex; // TODO: Implement
if(selectedIndex > 2) {
    // Do something
}
有关如何将其作为属性添加到ComboBox对象的奖励积分。     
已邀请:
我认为您必须为此使用组合商店。组合具有专用的“ 1”方法,该方法将通过属性和值对商店进行简单的搜索。您可以在源代码本身中看到一个示例(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));
  }
});
    
在Ext 4.0.2中,相同的代码如下所示:
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));
  }
});
Jad,您在return语句中缺少右括号,只是以为您应该知道。     
如果您有一个组合,其中valueField是组合商店使用的ID,则可以简单地避免搜索:
var v = combobox.getValue();
var record = combobox.findRecord(combobox.valueField || combobox.displayField, v);
var index = combobox.store.indexOf(record);
使用这个:
var id = combobox.getValue();
var record = store_combobox.getById(id);
    

要回复问题请先登录注册