Добрый день.
Pavel M. - Сделал по вашему примеру так:
....
{
....
store: Ext.create('Ext.data.Store', {
fields: ['id', 'name', 'show'], // в show массив с id, которые показываем при выборе этого пункта
data: [
{id:1, name:"Пункт 1", show:[1, 2]},
{id:2, name:"Пункт 2", show:[1, 2, 3]},
{id:3, name:"Пункт 3", show:[2, 3, 4]},
{id:4, name:"Пункт 4", show:[3, 4, 5]},
{id:5, name:"Пункт 5", show:[4, 5, 6]},
{id:6, name:"Пункт 6", show:[5, 6]}
]
}),
listeners: {
render: function (combo){
store = combo.getStore();
store.filter('id', 1);
},
select: function (combo, rec) {
store = combo.getStore();
store.clearFilter(true);
store.filter({
property: 'id',
operator: 'in',
value: rec.get('show')
});
}
}
},
.....
Пример в
fiddle
При создании новой записи работает как и требуется, но если редактируем имеющуюся,
то событие select срабатывает только когда выбран уже элемент, соответственно фильтрации по значениям 'show' не происходит.
По идее, если перенести фильтрацию в render, то можно добиться необходимого, но при этом мне обязательно нужно получать установленное значение комбы,
и вроде так должно работать, но как мне получать в render текущую запись?
listeners: {
render: function (combo){
currentRec.get('show')//currentRec - Должна быть установленная запись, но как мне ее получить в render ?
if(Ext.Object.isEmpty(currentRecShow)){
store = combo.getStore();
store.filter('id', 1);
}
else{
store = combo.getStore();
store.clearFilter(true);
store.filter({
property: 'id',
operator: 'in',
value: currentRec.get('show')//rec.get('show')
});
}
},
}
Возможно что мой вариант абсолютно не правильный. Тогда как сделать наиболее верное решение?