在我的网格上,我正在使用划船。
如果使用Internet Explorer 10(可能也是其他版本)并且页面有滚动条
当我编辑一行并单击“更新”时,页面会向上滚动到网格的开头。
这个问题已经很好地记录在案(虽然没有特别针对4.1)。
我已经看到修复了像这样覆盖rowModel
Ext.override(Ext.selection.RowModel, {
onRowMouseDown: function(view, record, item, index, e) {
// view.el.focus();
this.selectWithEvent(record, e);
}
});
我还看到将以下内容添加到网格中。
selModel: Ext.create('Ext.selection.Model', { listeners: {} }),
这些选项都不适合我。
我尝试过“preserveScrollOnRefresh:true”,如下所示。但问题仍然存在。我在dropbox上放了一个例子。要在Internet Explorer中重新创建此项,您需要最小化浏览器并单击/编辑需要网格页脚的项目。
答案 0 :(得分:4)
标准功能适用于我:
Ext.define('My.Grid', {
extend: 'Ext.grid.Panel',
viewConfig: {
preserveScrollOnRefresh: true
}
});
答案 1 :(得分:1)
如果您正在使用CellModel或遇到其他解决方案的问题,此解决方案应该有效:
Ext.override(Ext.dom.Element, {
focus: function (defer, dom) {
var me = this,
scrollTop,
body;
dom = dom || me.dom;
body = (dom.ownerDocument || DOC).body || DOC.body;
try {
if (Number(defer)) {
Ext.defer(me.focus, defer, me, [null, dom]);
} else {
if (dom.tagName != 'DIV') {
if (dom.offsetHeight > Ext.dom.Element.getViewHeight()) {
scrollTop = body.scrollTop;
}
dom.focus();
if (scrollTop !== undefined) {
body.scrollTop = scrollTop;
}
}
}
} catch (e) {
}
return me;
}
});