[英]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.