extjs grid.panel商店:加载/重新加载后保持滚动栏位置



我正在使用 grid.panel 在sencha extjs 4.0.2a中,我每60秒重新加载一个JSON商店。

我想知道是否有一种方法可以在数据负载后保留滚动条的位置。
,以便用户可以继续查看他在加载之前正在寻找的记录。

我使用任务重新加载网格中的数据:

var task = {
    run: function(){
        Ext.getCmp(panelGridId).getStore().load({
            //Callback function after loaded records
            callback: function(records) {
                //Hide grid if empty records
                if (Ext.isEmpty(records)) {
                    Ext.getCmp(panelGridId).setVisible(false);
                }
                else {
                    if (Ext.getCmp(panelGridId).isHidden()) {
                        Ext.getCmp(panelGridId).setVisible(true);
                        Ext.getCmp(panelGridId).doComponentLayout();
                    }
                }
            }
        });
    },
    interval: 60000 //60 seconds
};
Ext.TaskManager.start(task);

数据加载后,滚动栏位置已重置为顶部。

Q:有没有办法在数据加载后保持滚动栏位置?

预先感谢!

尝试这个坏男孩在刷新上保留滚动位置:

http://docs-devel.sencha.com/extjs/4.2.1/#!/papi/ext.grid.view-cfg-preservescrollonrefresh

这对我的树视图对我有用。

viewConfig: {
   preserveScrollOnRefresh: true
}

这是您在网格中使用 PreservesCrollonRefresh 的方法:

Ext.define('js.grid.MyGrid', {
    extend: 'Ext.grid.Panel',
    viewConfig: {
        preserveScrollOnRefresh: true
    }

这是一个JSFIDDLE,可以证明这一点:

http://jsfiddle.net/cdbm6r0o/7/

但是,当您选择一行时,它似乎并不能完全正确。我不确定这是否是错误。

从此代码触发"刷新"事件:

grid.store.loadData(dataToLoad);

我不知道触发"刷新"

的其他任何事件

其他注释:

  • 我需要 ext.toolbar.paging 。即使我没有使用它,当我选择一排或多个行时,它也会拧紧卷轴保护层,因此请确保您从要求中删除分页。
  • 如果我同时使用 bufferedRenderer 插件,则滚动保护层似乎不起作用。
  • tablepanel.getView()。focusrow(recrow)也很有趣,但也不适用于BufferedRenderer。

您可以使用preserveScrollOnReload查看配置属性:

viewConfig: {
    preserveScrollOnReload: true
},

最新更新