Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJs grid.Panel存储:加载/重新加载后保持滚动条位置_Javascript_Extjs4.1 - Fatal编程技术网

Javascript ExtJs grid.Panel存储:加载/重新加载后保持滚动条位置

Javascript ExtJs grid.Panel存储:加载/重新加载后保持滚动条位置,javascript,extjs4.1,Javascript,Extjs4.1,我正在使用Sencha ExtJs 4.0.2a中的grid.Panel,每60秒重新加载一个Json存储 我想知道是否有办法在数据加载后保留滚动条的位置。 以便用户可以继续查看加载前查看的记录 我使用任务在网格中重新加载数据: var task = { run: function(){ Ext.getCmp(panelGridId).getStore().load({ //Callback function after loaded record

我正在使用Sencha ExtJs 4.0.2a中的grid.Panel,每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);
数据加载后,滚动条位置重置为顶部。。

问:有没有办法在数据加载后保持滚动条的位置


提前谢谢

尝试使用此坏小子在刷新时保留滚动位置:

这对我的树状视图很有用

viewConfig: {
   preserveScrollOnRefresh: true
}

以下是如何在网格中使用preserveScrollOnRefresh

Ext.define('js.grid.MyGrid', {

    extend: 'Ext.grid.Panel',

    viewConfig: {
        preserveScrollOnRefresh: true
    }
下面是一个JSFIDLE,它演示了这一点:

但是,当您选择一行时,它似乎不太正确。我不确定这是否是一个错误

“刷新”事件由以下代码触发:

grid.store.loadData(dataToLoad);
我不知道有任何其他事件会触发“刷新”

补充说明:

  • 我需要Ext.toolbar.Paging。尽管我没有使用它,但当我选择了一行或多行时,它会破坏滚动保留,因此请确保从您的页面中删除分页
  • 如果同时在表上使用bufferedrenderer插件,则滚动保留似乎不起作用
  • tablePanel.getView().focusRow(重新播放)也很有趣,但不适用于bufferedrenderer

您可以在viewConfig中使用preserveScrollOnReload:true

视图配置:{ PreserveCollOnReload:true
},

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

viewConfig: {
    preserveScrollOnReload: true
},

好主意@dbrin,您可以使用viewConfig(因为您使用的是gridpanel)conf来设置表的viewConfig:{preserveCollOnRefresh:true}。非常感谢!我会尽快尝试(我需要将我的ExtJS 4.0.2a升级到4.1版)注意:如果您使用grid.store.load();保存滚动重新加载将不起作用!但是grid.store.reload();将工作并保存网格位置。