在 IE7 中,第一次单击网格会导致 ExtJS Ext.grid.GridPanel 跳转到页面顶部

Posted

技术标签:

【中文标题】在 IE7 中,第一次单击网格会导致 ExtJS Ext.grid.GridPanel 跳转到页面顶部【英文标题】:In IE7 the first click on a grid causes an ExtJS Ext.grid.GridPanel to jump to the top of the page 【发布时间】:2011-05-13 15:43:50 【问题描述】:

我有一个使用数组馈送 ExtJS gridPanel 的奇怪问题 - 仅在 IE7 中,在触发 rowclick 事件之前,当我单击一行时,页面向上滚动 2-3 行。在重复点击时,页面会向上滚动,直到页面位于页面顶部。然后只有 rowclicks 被传递给我的处理程序。 我在这个网格上只注册了两个听众:

听众: rowclick:函数(网格,rowIndex,e) ...我的处理程序 , 排序变化:函数(网格,行索引,e)

你有什么想法吗?

【问题讨论】:

How to prevent extjs grid from scrolling when clicking on a cell?的可能重复 【参考方案1】:

我在 Internet Explorer 7 中遇到过类似的错误。对我来说 zoom:1;位置:相对;在周围容器上有助于强制布局属性。

【讨论】:

谢谢!我遇到了与 OP 相同的问题,但在 Internet Explorer 8 中。在父容器上使用 CSS 解决了问题,但只有当我也将代码切换为使用网格的 select 事件时;我之前一直在使用itemclick 事件,即使使用 CSS,它仍然具有相同的不良行为。顺便说一下,这是使用 ExtJS 4.0.7。【参考方案2】:

试试这个补丁

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);
    
);

实际上,任何“可聚焦”元素都可以使用(tr 和 td 不是)。

【讨论】:

以上是关于在 IE7 中,第一次单击网格会导致 ExtJS Ext.grid.GridPanel 跳转到页面顶部的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS 存储/网格重置

ExtJS:编辑整个网格并一次保存

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

单击 extjs 网格操作列内的图标时需要更改图标

单击一行后,Extjs 4 网格自定义添加一个带有文本字段的面板

如何仅在单击网格中的复选框而不是单击单元格或行时选择复选框在 extjs 3.2