2

这可能是一个人工制品,但它在我切换到 SlickGrid V2 后构建的几个网格中是非常可重现的(仅 IE)(在以前的版本中从未见过)。当用户调整列大小时,Resort 方法也会触发,这当然会重新调整列。
我也这样做了(没有效果):

grid.onColumnsResized.subscribe(function(e, args) {
    e.stopImmediatePropagation();
    e.stopPropagation();
    // alert('resized');
    return false;
});

但是,当我包含警报时......一切正常(没有办法)。所以...我认为这是一个时间问题。我设置了一个错误的 2 秒计时器(除了时间什么都不做),也没有任何效果(仍然有效)。有人可以解释发生了什么以及为什么alert似乎允许一切正常工作。我使用本地的 Resort 还是默认的 SlickGrid Resort 方法也没关系。

谢谢

4

1 回答 1

1

基本上问题是当您调整大小时,IE 会触发列上的单击事件。如果鼠标向上时光标下方有列标题,则该列将被重新使用。

至于为什么警报框有帮助,浏览器事件是按特定顺序触发的。在 IE 中,dragend(触发 onColumnsResized)在单击(触发手段)之前被触发。因为它们不是同一类型,所以停止传播不会做任何事情,但是弹出一个警告框可能会阻止在列标题上注册幻影点击。

这是应该在 SlickGrid 库中解决的问题,而不是使用它的代码。

于 2013-06-02T01:25:24.447 回答