我有一个组合框从DB中返回10个值;
Ext.define('Iso3Combo', {
extend:'',
xtype:'iso3combo',
requires: [
'Ext.data.proxy.Ajax',
'Ext.data.reader.Json'
],
name: iso3
fieldLabel: iso3,
displayField:'iso3', // takes from DB
valueField:'id', // takes from DB
store: {
proxy: {
type: 'ajax',
url: ...getUrl() + '/country/list',
reader: {
type: 'json',
rootProperty: 'data'
}
},
autoLoad: true
},
queryMode: 'local',
autoLoad:true,
bind: '{currRec.iso3}',
listeners: {
fn: function () {
console.log('isocombo listeners...');
},
select: this.getIso3,
change: this.getIso3,
scope: this
}
});
正如您将在上面注意到的那样; combobox
显示的内容为iso3
,并以id
为主键。因此我无法更改valueField。因此,尝试使用此函数来获取所选组合框记录的其他值;
getIso3: function () {
var me = this;
// var rec = me.getSelectedRecords(); //says getSelectedRecords is not a function
var country = me.down('[name=iso3]').getValue(); // returns 'id'
// var isoCode = rec.data.iso3; //Couldn't be success to verify if I get correct value..
如何从选定的组合框记录中加载所有数据库值并选择其中一个?
答案 0 :(得分:1)
您需要使用combobox.getSelection()
或combobox.getSelectedRecord()
。这两种方法都会返回您选择的记录。或者在select
事件内,您将在第二个record
中被选中parameter
,因此您也可以获得此iso3
的{{1}}值。
以下是 FIDDLE ,我使用record.get('iso3')
和form
创建了一个演示版。这将帮助您或指导您解决问题。
我正在使用 COUNTRY JSON 。
代码段
combobox