如何从组合框中选择所有值的记录?

时间:2018-01-17 12:38:29

标签: javascript extjs combobox record

我有一个组合框从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..

如何从选定的组合框记录中加载所有数据库值并选择其中一个?

1 个答案:

答案 0 :(得分:1)

您需要使用combobox.getSelection()combobox.getSelectedRecord()。这两种方法都会返回您选择的记录。或者在select事件内,您将在第二个record中被选中parameter,因此您也可以获得此iso3的{​​{1}}值。

以下是 FIDDLE ,我使用record.get('iso3')form创建了一个演示版。这将帮助您或指导您解决问题。

我正在使用 COUNTRY JSON

代码段

combobox