这是动态改变列之前的:
这是bug出现:
通过打勾复选框来动态改变列。但是把横向滚动条拉到最右边再去动态改变列,就会出现这种数据错位的情况。
解决思路:
如果你再出现错位的情况下再拖到一下横向滚动条,那么位置就会正常了。
所以我们只要稍微改变一个横向滚动条的位置就可以了。
代码示例:
listeners : {
change : function(t, newV, oldV) {
var col = me.finGrid.columns;
for (var j = 0; j < col.length; j++) {
if (this.rawValue == true) {
if (['employee_name']
.indexOf(me.finGrid.columns[j].dataIndex) > -1) {
me.finGrid.columns[j].setVisible(true);
//解决横向滚动条移到最右边时,显示列之后出现数据错位的bug。
me.finGrid.getView().getEl().dom.scrollLeft = me.finGrid.getView().getEl().dom.scrollLeft + 1
}
}
if (this.rawValue == false) {
if (['employee_name']
.indexOf(me.finGrid.columns[j].dataIndex) > -1) {
me.finGrid.columns[j].setVisible(false);
}
}
}
}
}
通过grid.getView().getEl().dom.scrollLeft 获取横向滚动条已经移动的长度,
那么我们只要增加1的长度就实现了。