Ext JS 4.2.1 - 带分页的网格 - 复选框状态丢失

Bla*_*ack 0 javascript checkbox extjs

我有一个 ExtJS 网格,它有一个用于(远程)分页的 PagingToolbar,以及一个定义为的复选框列:

{
    dataIndex : 'selected',
    xtype: 'checkcolumn',
    width : 60                      
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我选中一个框然后向前和向后翻页,则不会保存复选框状态 - 所有复选框都未选中。

我想因为商店只包含当前页面的数据(来自服务器),我需要某种方式来存储不在当前数据页面中的行的状态,然后在我返回到该页面时恢复复选框。

是否有最佳实践或在分页时将复选框状态存储在商店中的示例?

Ale*_*der 5

嗯,这是一项非常低级的工作,没有人想过为此制定“最佳实践”。例如

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")]);
    });
}
Run Code Online (Sandbox Code Playgroud)

或者

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")]);
    });
}
Run Code Online (Sandbox Code Playgroud)