Для поля со списком, в окне редактирования мне нужно, чтобы поле меняло только одно значение вверх или вниз, как при создании новой записи или ее редактировании.
....
{
xtype: 'combobox',
name: 'status',
fieldLabel: 'Status',
displayField: 'name',
valueField: 'id',
queryMode: 'local',
store: new Ext.data.ArrayStore({
id: 0,
fields: ['id','name'],
data: [[1, 'Новая'], [2, 'В работе'], [3, 'В ожидании'], [4, 'Закрытая'], [5, 'Архивная']]
}),
listeners: {
'select': function (combo, record) {
index = record.internalId;
filterCombo(combo, index);
},
'render': function (combo) {
//index = combo.getSelection().internalId;
//filterCombo(combo, index);
}
}
},
....
Я делаю это с помощьювыбрать и визуализировать события.Функция filterCombo выглядит следующим образом:
function filterCombo(combobox, index) {
store = combobox.getStore();
store.clearFilter();
store.filterBy(
function(record) {
if ((record.internalId == index - 1) || (record.internalId == index) || (record.internalId == index + 1)) {
return true;
} else {
return false;
}
}
);
}
- При выполнении рендера возникает ошибка в
combo.getSelection () (ReferenceError: index is not defined)
.Почему? - Можно ли реализовать эту логику более кратко, например, в ViewController в методах addItem, editItem.Т.е. отфильтровать магазин в момент открытия формы для добавления / редактирования, или это вариант не очень?
- Если остановиться на 1-й точке, то где было бы наиболее правильно вынутьфункция
filterCombo
, которая не оставляет ее в представлении App.view.TestEdit
Пример Fiddle
Спасибо