我有两个组合框。
当在第一个组合框中选择第一个字段时,它必须显示一些商店元素,而对于下一个字段则显示一些其他商店元素。为此我在这里创建两个不同的商店并绑定它们。但是现在我觉得这不是一个好习惯,因为Store1包含了Store2的元素。
有没有办法只显示一个商店选择性数据,并选择第一个组合框的字段。
{
xtype: 'combobox',
fieldLabel: 'Type',
store: 'hsg'
listeners: {
change: function(combo, value) {
var Store1 = Ext.create('Ext.data.Store', {
fields: ['id', 'name'],
data: [{
'id': 1,
'name': 'StoreA'
},
{
'id': 2,
'name': 'StoreB'
},
{
'id': 3,
'name': 'StoreC'
},
{
'id': 4,
'name': 'StoreD'
},
{
'id': 5,
'name': 'StoreF'
}
]
});
var Store2 = Ext.create('Ext.data.Store', {
fields: ['id', 'name'],
data: [{
'id': 1,
'name': 'StoreA'
},
{
'id': 2,
'name': 'StoreB'
}
]
});
if (2 == value)
combo.up().down('combobox[xscope="storeCombo"]').bindStore(Store1);
else
combo.up().down('combobox[xscope="storeCombo"]').bindStore(Store2);
}
}
}, {
xtype: 'combobox',
fieldLabel: 'Store',
xscope: 'storeCombo',
itemId: 'Store_Id',
displayField: 'name',
valueField: 'id',
}
答案 0 :(得分:2)
在change
事件监听器中,您可以使用Ext.data.Store.filter
方法过滤组合框的商店:http://docs.sencha.com/extjs/6.5.3/classic/Ext.data.Store.html#method-filter
为此,您需要在数据源上实现过滤逻辑。