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 をトリガーする) がクリック (resort をトリガーする) の前に起動されます。それらは同じタイプではないため、伝播を停止しても何も起こりませんが、警告ボックスをポップアップすることで、ゴースト クリックが列ヘッダーに登録されないようにすることができます。

これは、それを使用するコードではなく、SlickGrid ライブラリで回避する必要があるものです。

于 2013-06-02T01:25:24.447 に答える