簡體   English   中英

如何獲取ExtJS Combobox的選定索引

[英]How do I get the selected index of an ExtJS Combobox

在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對象的加分點。

我想你必須使用combo的商店。 findRecord有一個私有的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));
  }
});

在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,你在退貨聲明中錯過了一個右括號......只是覺得你應該知道。

如果你有一個組合,其中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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM