如何防止 extjs 网格在点击单元格时滚动?

发布于 2024-11-08 15:17:31 字数 425 浏览 0 评论 0原文

我目前正在使用基于可编辑网格示例的 Extjs 4 网格组件。我希望有一个与每个单元格关联的链接,这样当我单击一个单元格时,它会将我带到另一个页面。但是,当单击链接时页面上会触发垂直滚动。

例如尝试减小 http://dev 的大小.sencha.com/deploy/ext-4.0.0/examples/grid/cell-editing.html,第一次点击网格会滚动页面,使网格位于中心,事件被吞掉。您必须再次单击才能注册 cellclick 事件。这只发生在 IE 中(我使用的是版本 8)。好消息是,其他浏览器不会发生这种情况,这可能是一个错误,有没有办法阻止第一次滚动操作的发生?

谢谢

I am currently using the grid component with Extjs 4 based on the editable grid example. I would like to have a link associated with each cell so that when I click on a cell it takes me to another page. However, when there is a vertical scroll that is trigered on the page when clicking on the link.

e.g. try reducing the size of http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/cell-editing.html, the first click on the grid scrolls the page so that the grid is on the center and the event is swallowed. You have to click again to have the cellclick event registered. This only happens in IE (I am using version 8). The good news is that this does not happen with other browsers, could this be a bug and is there a way to prevent this first scrolling action from happening?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

养猫人 2024-11-15 15:17:31

我遇到了同样的问题,并在 Sencha 讨论板上找到了解决方案。

添加此代码确实对我有用:

selModel: Ext.create('Ext.selection.Model', { listeners: {} }),

更多信息:
http://www.sencha.com/forum/showthread.php?133983-How-to-prevent-extjs-grid-from-scrolling-when-clicking-on-a-cell

I´ve had the same problem and found a solution on the Sencha discussion board.

Adding this code did work for me:

selModel: Ext.create('Ext.selection.Model', { listeners: {} }),

More information:
http://www.sencha.com/forum/showthread.php?133983-How-to-prevent-extjs-grid-from-scrolling-when-clicking-on-a-cell

奈何桥上唱咆哮 2024-11-15 15:17:31

试试这个补丁

Ext.override(Ext.selection.RowModel, {
    onRowMouseDown: function(view, record, item, index, e) {
        //IE fix: set focus to the first DIV in selected row
        Ext.get(item).down('div').focus();

        if (!this.allowRightMouseSelection(e)) {
            return;
        }

        this.selectWithEvent(record, e);
    }
});

Try out this patch

Ext.override(Ext.selection.RowModel, {
    onRowMouseDown: function(view, record, item, index, e) {
        //IE fix: set focus to the first DIV in selected row
        Ext.get(item).down('div').focus();

        if (!this.allowRightMouseSelection(e)) {
            return;
        }

        this.selectWithEvent(record, e);
    }
});
两仪 2024-11-15 15:17:31

我今天在 ExtJS 4.2 中遇到了同样的问题,早期的解决方案对我不起作用,在 gridpanel 上使用此配置可​​以完全解决问题:

viewConfig: {
    focusRow: Ext.emptyFn
}

例如:

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    viewConfig: {
        focusRow: Ext.emptyFn
    }
    columns: [
        { text: 'Name',  dataIndex: 'name' },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});

I had this same problem with ExtJS 4.2 today and the earlier solutions were not working for me, using this config on the gridpanel handled the problem fully:

viewConfig: {
    focusRow: Ext.emptyFn
}

For example:

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    viewConfig: {
        focusRow: Ext.emptyFn
    }
    columns: [
        { text: 'Name',  dataIndex: 'name' },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});
暮年 2024-11-15 15:17:31

这可能类似于此问题: 在 IE7 中,第一次单击网格会导致 ExtJS Ext.grid.GridPanel 跳转到页面顶部
尝试在网格周围的容器上使用position:relative;zoom:1来给它hasLayout

this could be similar to this problem: In IE7 the first click on a grid causes an ExtJS Ext.grid.GridPanel to jump to the top of the page
try position:relative;zoom:1 on the container around the grid to give it hasLayout

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文