extjs5的grid垂直滚动条bug_ExtJS 6.2.1 Classic Grid 滚动条bug解决方案

在ExtJS 6.2.1 Classic Grid中,当既有水平滚动条又有垂直滚动条,且垂直滚动条位于底部时,点击水平滚动条会导致垂直滚动条回到顶部。这是一个独有的bug。通过覆写'Ext.grid.NavigationModel'类并调整'onContainerMouseDown'方法,可以解决这个问题。具体解决方案是检查点击位置是否为滚动条,如果是则不进行任何操作,从而避免滚动条自动滚动。
摘要由CSDN通过智能技术生成

如果列表同时存在横向滚动条和竖向滚动条,当竖向滚动条滚动到底部时

点击横向滚动条,滚动条会自动滚动到顶部

此bug未在其他版本发现,参考高版本代码重写类解决此bug,直接上代码:

/**

* 如果列表同时存在横向滚动条和竖向滚动条,当竖向滚动条滚动到底部时

* 点击横向滚动条,滚动条会自动滚动到顶部

* 6.2.1 bug修复

*/

Ext.define('override.grid.NavigationModel', {

override: 'Ext.grid.NavigationModel',

//当列表被点击时

onContainerMouseDown: function (view, mousedownEvent) {

var me = this,

context = new Ext.grid.CellContext(view),

lastFocused,

position;

//执行Ext.grid.NavigationModel父类的同名方法

//执行此方法后如果点击的是滚动条view.lastFocused的值会变为scrollbar

//可以由此判断点击的是滚动条还是列表内容

//这样就能解决这个bug

me.callSuper([view, mousedownEvent]);

lastFocused = view.lastFocused;

position = (view.actionableMode && view.actionPosition) || lastFocused;

//判断点击的元素是否是滚动条,如果是则不做任何操作

if (!position || lastFocused === 'scrollbar') {

return;

}

context.setPosition(position.record, position.column);

mousedownEvent.position = context;

me.attachClosestCell(mousedownEvent);

// If we are not already on that position, set position there.

if (!me.position.isEqual(context)) {

me.setPosition(context, null, mousedownEvent);

}

}

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值