ExtJS-带商店的组合框添加自定义选择

时间:2018-07-24 09:39:55

标签: javascript extjs

是否可以在不更改EXT商店(此示例中为myStore.carTypes)的情况下添加仅显示“无”的选项?自定义值为“”

type: 'combo',
fieldLabel: 'Car',
name: 'carName',
otrId: 'carName',
hidden: false,
allowBlank: true,
store: 'myStore.carTypes',
displayField: 'name',
valueField: 'name',
maskRe: /

1 个答案:

答案 0 :(得分:0)

这些是我根据阅读您的问题得出的假设: 您不需要商店中的条目(“无”),但仍希望组合框中有该条目。 您想要一个名为None的值“”的条目,但由于displayField和valueField相同而存在问题。

我有一个技巧可以解决这个问题。首先在组合框上创建一个新商店,其条目为“ None”,并具有一个在查询前更改商店数据的侦听器。在此示例中,确保组合框的valueField和displayField不同(缩写,名称)。在此示例中,在beforequery侦听器中,我们修改与组合框关联的存储,并从其他存储(状态1)复制数据。在复制时,我们将来自states1存储的名称复制为新存储中的名称和缩写。这应该可以解决您的问题,请查看下面的代码或在此https://www.campaignmonitor.com/css/selectors/hover/上查看它的运行情况。如果要运行小提琴,请确保选择的主题是经典主题。

Ext.application({
name: 'Fiddle',

launch: function () {
    var states1 = Ext.create('Ext.data.Store', {
        fields: ['abbr', 'name'],
        data: [{
            "abbr": "Alabama",
            "name": "Alabama"
        }, {
            "abbr": "Alaska",
            "name": "Alaska"
        }, {
            "abbr": "Arizona",
            "name": "Arizona"
        }]
    });

    Ext.create('Ext.form.ComboBox', {
        fieldLabel: 'Choose State',
        store: Ext.create('Ext.data.Store', {
            data: [{
                name: 'None',
                abbr: ''
            }, ]
        }),
        queryMode: 'local',
        displayField: 'name',
        valueField: 'abbr',
        editable: false,
        renderTo: Ext.getBody(),
        listeners: {
            beforequery: function (queryEvent, opts) {
                states1.each(function (record) { //replace states1 with your store var
                    queryEvent.combo.store.add({
                        name: record.data.name,
                        abbr: record.data.name
                    });
                });
            }
        }
    });
  }
});