Ext JS 4.2.1 - сетка с пейджингом - состояние флажка потеряно
У меня есть сетка ExtJS, которая имеет PagingToolbar для (удаленного) пейджинга и столбец флажка, определенный как:
{
dataIndex : 'selected',
xtype: 'checkcolumn',
width : 60
}
Однако, если я установлю флажок, а затем переместлю страницу вперед и назад, состояние флажка не будет сохранено - все флажки сняты.
Я предполагаю, что поскольку хранилище содержит данные только для текущей страницы (с сервера), мне нужен какой-то способ хранения состояния для строк, которых нет на текущей странице данных, а затем повторной установки флажков при возвращении на эту страницу.
Есть ли лучшая практика или пример сохранения состояния флажка в хранилище во время подкачки?
1 ответ
Решение
Ну, это настолько низкоуровневая работа, что никто еще не подумал сделать "лучшую практику" для нее. Например
beforeload:function(store) {
if(!store.checkedItems) store.checkedItems = [];
store.each(function(item) {
store.checkedItems[item.get("Id")] = item.get("selected");
});
},
load:function(store) {
if(!store.checkedItems) store.checkedItems = [];
store.each(function(item) {
item.set("selected",store.checkedItems[item.get("Id")]);
});
}
или же
beforeload:function(store) {
if(!store.checkedItems) store.checkedItems = [];
store.each(function(item) {
store.checkedItems[item.get("Id")] = {selected: item.get("selected") }; // extensible if you want to keep more than one checkbox...
});
},
load:function(store) {
if(!store.checkedItems) store.checkedItems = [];
store.each(function(item) {
item.set(store.checkedItems[item.get("Id")]);
});
}