如何在 extjs 表单上保存滚动位置?

Posted

技术标签:

【中文标题】如何在 extjs 表单上保存滚动位置?【英文标题】:How to save scroll position on an extjs form? 【发布时间】:2013-07-24 16:04:36 【问题描述】:

我有一个带有组合框和按钮的长表单,可以将元素添加到表单中。每次更新组合框的值或添加元素时,它都会向上滚动到表单的顶部。我希望滚动条保持其位置。我尝试通过这样做来保存当前滚动位置

     this.myForm.getScrollPosition();

但我得到 getScrollPosition 不是函数错误。

有什么帮助吗?

【问题讨论】:

为什么更新组合框时表单会滚动到顶部?我的没有。 您好 Dbrin,这不仅仅是组合框,即使我将记录添加到表单内的网格中,添加后,它也会在顶部。现在我只想保存当前的滚动位置。我该怎么做? 可以控制网格问题有一个网格属性,但我不确定它为什么会影响您的表单。在此处查看此答案:***.com/questions/13088506/… 【参考方案1】:

如果您使用 extjs,有一种方法可以使用 Ext.dom.Element 类来操作滚动,Extjs 中的每个组件都继承自它,然后如果您添加一个修改表单高度或宽度的新组件,您可以首先使用以下方法获取该组件的高度和宽度:

var newcompwidth = comboboxexample.getWidth();
var newcompheight = comboboxeample.getHeight();

稍后您可以使用 scrollTo 方法修改滚动值,如下所示:

myformcontainer.getEl().scrollTo('Top',myformcontainer.getEl().getScroll().top - newcompheight);

myformcontainer.getEl().scrollTo('Top',myformcontainer.getEl().getScroll().left - newcompwidth);

还有其他方法,例如scrollByscroll,但我还没有测试过,我想这会对你有所帮助。

文档:http://docs.sencha.com/extjs/4.1.0/#!/api/Ext.dom.Element

【讨论】:

以上是关于如何在 extjs 表单上保存滚动位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在gridpanel Extjs的工具栏上获取表单

如何在 RichEdit 中保存然后恢复垂直滚动位置

如何使用 extjs 3.4 将工具提示位置保持在任何屏幕上?

每次重新创建滚动位置后,如何将滚动位置保存在回收站视图中?

如何在 ExtJS 4 网格面板中保留垂直滚动条?

extjs 5 如何将商店绑定到模态窗口和网格