1

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

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

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


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

4

1 回答 1

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

于 2012-07-31T18:19:07.310 回答