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")]);
    });
}
Другие вопросы по тегам