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

时间:2011-05-19 15:53:00

标签: javascript extjs extjs4

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

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

谢谢

4 个答案:

答案 0 :(得分:11)

我遇到了同样的问题,并在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

答案 1 :(得分: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);
    }
});

答案 2 :(得分:2)

我今天在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()
});

答案 3 :(得分:1)

这可能类似于这个问题:In IE7 the first click on a grid causes an ExtJS Ext.grid.GridPanel to jump to the top of the page 尝试位置:相对;缩放:在网格周围的容器上为1给它hasLayout