是否可以在不更改EXT商店(此示例中为myStore.carTypes)的情况下添加仅显示“无”的选项?自定义值为“”
type: 'combo',
fieldLabel: 'Car',
name: 'carName',
otrId: 'carName',
hidden: false,
allowBlank: true,
store: 'myStore.carTypes',
displayField: 'name',
valueField: 'name',
maskRe: /
答案 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
});
});
}
}
});
}
});