3

単一の選択グリッドが必要ですが、これがデフォルトであるため、最初は選択モデルの構成を含めませんでした。これはマウスの選択には問題なく機能しますが、キーを押すSHIFT + ENDとすべてのレコードが選択されます(またはPAGE UPHOMEまたはEND同様の効果があります)。

選択されたレコードは、グリッドをリロードせずに選択を解除することはできません(グリッドが構成されている必要がない限り、これは構成されてallowDeselect: trueいません)。

これがデフォルトに関するExtJSドキュメントの問題であると考えて、次にSINGLEselectを使用してグリッドパネルを明示的に構成しましたが、それでも問題が発生しました。

ここでいくつかのグリッドの例を確認しましたが、すべて同じ問題があります。単一の選択グリッドではマウスの複数選択ができなくなりますが、Shiftキーと、、、HOMEまたはをEND使用して複数選択できます。そして、レコードの選択を解除することは不可能です。PAGE UPPAGE DOWN

フレームワークのバグのようで、レポートを提出しますが、グリッドは最も一般的に使用されるコンポーネントの1つであるため、誰かがこれを回避できると思いました。

必死になって、私もグローバルに聞いてkeypressイベントを止めようとしましたが、それでもうまくいきません。たとえば、これはコンソールにログを記録しますが、イベントはとにかく実行されます。

Ext.getDoc().on('keypress', function(event, target) {
    var key = event.getKey();

    // do not allow multiple grid selection
    if (event.shiftKey && (
        key == event.PAGE_UP ||
        key == event.PAGE_DOWN ||
        key == event.HOME ||
        key == event.END)) {

        console.log('unsuccessfully trying to stop the event!');
        event.stopEvent();
        event.stopPropagation();
        event.shiftKey = false;
        return false;
    }
});

編集:

enableKeyNav: falseキーボードで複数選択したくないだけで、すべてのキーボードナビゲーションを無効にしたくありません。

4

1 に答える 1

2

次を使用できます。

selModel: {
    enableKeyNav: false
},

グリッド構成で。しかし、それは私にとって予想外の選択モデルの動作でした...

アップデート

非常に単純なバージョンとして:

selModel: {
    selectRange: function() {
        return false;
    }
},
于 2013-02-01T07:01:05.603 に答える