Я следующий выпадающий заявил:ExtJS Filtering выпадающий магазин
{
xtype: 'combobox',
id:'sizeSelect',
store: new Ext.data.SimpleStore({
fields: [
{name: 'typeChoosen', type: 'string'},
{name: 'sizeValue', type: 'string'}
],
data: [
['DECIMAL','(9.2)'],
['DECIMAL','(9.4)'],
['DECIMAL','(19.2)'],
['DECIMAL','(19.4)'],
['DECIMAL','(28.2)'],
['DECIMAL','(28.4)'],
['DECIMAL','(38.2)'],
['DECIMAL','(38.4)'],
['TEXT','250'],
['TEXT','500'],
['TEXT','1000'],
['TEXT','2000'],
['TEXT','4000'],
['INTEGER','dafault']
]
})
}
Я использую его в панели с сеткой, для колонки «Размер»:
Я хочу combobox в столбце «размер» для обновления на основе предыдущего значения ячейки с соответствующими значениями для каждого типа.
В сетчатой панели у меня есть следующий слушатель, который я использую для фильтрации:
listeners : {
beforeitemdblclick : function(eventThis, record, item, index, e, eOpts,objA){
var stateCombo = Ext.getCmp('sizeSelect');
var currentTypeChoosen = record.raw[1]
stateCombo.store.each(function(storeItem){
if(storeItem.data.typeChoosen == currentTypeChoosen){
stateCombo.store.filter("typeChoosen",currentTypeChoosen);
}
});
}
кажется сравнить это правильно, но он возвращает объект в выпадающем списке, а не только значения. Я довольно новичок в ExtJS, и я действительно не могу придумать способ заставить его работать так, как я хочу.
UPDATE
Это мой рабочий код:
{
xtype: 'combobox',
id:'sizeSelect',
editable:false,
valueField: 'typeValue',
displayField: 'typeValue',
mode:'local',
lastQuery: '',
allowBlank: false,
listeners:{
},
store: new Ext.data.SimpleStore({
fields: ['size', 'typeValue'],
data: [
['DECIMAL', '(9,2)'],
['DECIMAL', '(9,4)'],
['DECIMAL', '(19,2)'],
['DECIMAL', '(19,4)'],
['DECIMAL', '(28,2)'],
['DECIMAL', '(28,4)'],
['DECIMAL', '(38,2)'],
['DECIMAL', '(38,4)'],
['TEXT', '250'],
['TEXT', '500'],
['TEXT', '1000'],
['TEXT', '2000'],
['TEXT', '4000']
]
})
}
var panel3 = Ext.create('Ext.panel.Panel', {
id:'step3',
border:0,
xtype: 'panel',
anchor:'100% 100%',
hideMode:'display',
bodyStyle:"overflow-y:scroll !important;",
hidden:true,
autoHeight:true,
items: [{
xtype: 'grid',
id:'tableTypeGrid',
border: false,
plugins: [
Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 2
})
],
listeners : {
beforeitemdblclick : function(eventThis, record, item, index, e, eOpts){
var stateSizeCombo = Ext.getCmp('sizeSelect');
var sizeColumnStore = stateSizeCombo.getStore();
var prevCellValue = record.data.type;
sizeColumnStore.clearFilter();
sizeColumnStore.filter('size', prevCellValue); //
}
},
...
Свойство выпадающего списка оказалось очень важными :)
Спасибо! Пример действительно полезен. Я попробую это позже, и я надеюсь, что он также будет работать с моим кодом, потому что последняя версия ext, которую я могу использовать, - это 4.0. :/Это сомнительно. – Nyagolova
@Няголова, конечно, проверьте! На самом деле я работал с ExtJS 4, и я читал документы ExtJS 4, чтобы ответить на ваш вопрос, поэтому считаю, что он должен работать с ExtJS 4+. Если нет - спросите меня здесь. –
Я собираюсь принять его, потому что вы ответили мне очень много (хотя он не был реализован в моем коде), и скрипка на самом деле работает! :) – Nyagolova