Extjs 禁用本机网格滚动
Posted
技术标签:
【中文标题】Extjs 禁用本机网格滚动【英文标题】:Extjs disable native grid scroll 【发布时间】:2012-07-27 08:04:58 【问题描述】:我的 extjs 版本是 4.0.2a。有时网格中的垂直滚动条停止工作。这是常见的问题。我找到了一些解决方案,但它们对我不起作用:
this.Grid.hideVerticalScroller();
this.Grid.initVerticalScroller();
this.Grid.update();
this.Grid.determineScrollbars();
this.Grid.forceComponentLayout();
this.Grid.doComponentLayout();
我也尝试过 scroll: false,但它也不起作用,让我的浏览器停止响应。 我想,我可以禁用 extjs 网格滚动条并添加浏览器标准滚动条(溢出:自动),但我不知道如何。 有什么建议吗?
附:我不能使用另一个版本的 Extjs,因为有一个非常大的工作项目,在一些核心文件中有一些修复。使用新版本的 Extjs 将很难让所有工作都正常工作
【问题讨论】:
为什么投反对票?似乎是一个合理的问题。 【参考方案1】:这是我在 4.0.7 中使用的“修复”;它可能适用于 4.0.2。代码不是我的,我从 sencha.com 论坛拿的:
Ext.define('Ext.ux.grid.Panel',
extend: 'Ext.grid.Panel',
initComponent: function()
var me = this;
me.callParent(arguments);
me.on('scrollershow', function(scroller)
if (scroller && scroller.scrollEl)
scroller.clearManagedListeners();
scroller.mon(scroller.scrollEl, 'scroll', scroller.onElScroll, scroller);
);
,
onViewRefresh: function()
var me = this;
try
me.callParent();
catch (e) ;
);
使用 Ext.ux.grid.Panel 而不是 Ext.grid.Panel 来继承您的 Grid 类。它并不能完全解决问题,但会大大降低特定错误的可见性。
另外,我建议您硬着头皮升级到 4.1.1,根据我的经验,这是非常值得的。首先从核心中删除您的自定义修复;您可以将它们重构为覆盖核心类的单独类。在那之后,它会变得更容易。我知道,我也经历过。
【讨论】:
我会试试你的解决方法。如果有帮助,我会写在这里 我认为,它对我有用,因为经过一些测试,我没有遇到滚动问题。谢谢你。 关于更改核心 :) 我知道,这不好,但在这个项目的开始,我对在 extjs 中重新声明核心元素/功能知之甚少 :) 就像我说的,我也经历过。修改核心源来修复这个和那个并完成它似乎很容易;不幸的是,从长远来看,这种方法有很多缺点。实际上,您将自己锁定在特定版本的框架中,并且无法应用以后发布的任何维护版本。这对于早期的 Ext 4.0 版本尤其糟糕,因为它们特别有缺陷。所以我的建议是付出一些努力来解决这个锁定问题;之后管理你的代码会更容易。以上是关于Extjs 禁用本机网格滚动的主要内容,如果未能解决你的问题,请参考以下文章