Extjs禁用本机网格滚动

时间:2012-07-27 08:04:58

标签: extjs grid scrollbar

我的extjs版本是4.0.2a。有时网格中的垂直滚动条停止工作。这是常见的问题。我找到了一些解决方案,但它们对我不起作用:

this.Grid.hideVerticalScroller();
this.Grid.initVerticalScroller();
this.Grid.update();
this.Grid.determineScrollbars();
this.Grid.forceComponentLayout();
this.Grid.doComponentLayout();

我也尝试过滚动:false,但它也没有用,并且我的浏览器停止响应。 我想,我可以禁用extjs网格滚动条并添加浏览器标准滚动条(溢出:自动),但我不知道如何。 有什么建议吗?


P.S。我不能使用另一个版本Extjs,因为有一个非常大的工作项目,在一些核心文件中有一些修复。使用新版本的Extjs

将很难完成所有工作

1 个答案:

答案 0 :(得分:3)

这是我在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,根据我的经验,这是非常值得的。首先从核心中删除自定义修复程序;您可以将它们重构为覆盖核心类的单独类。在那之后,它会变得更容易。我知道,我也经历过这一切。