単一の選択グリッドが必要ですが、これがデフォルトであるため、最初は選択モデルの構成を含めませんでした。これはマウスの選択には問題なく機能しますが、キーを押すSHIFT + END
とすべてのレコードが選択されます(またはPAGE UP
、HOME
またはEND
同様の効果があります)。
選択されたレコードは、グリッドをリロードせずに選択を解除することはできません(グリッドが構成されている必要がない限り、これは構成されてallowDeselect: true
いません)。
これがデフォルトに関するExtJSドキュメントの問題であると考えて、次にSINGLE
selectを使用してグリッドパネルを明示的に構成しましたが、それでも問題が発生しました。
ここでいくつかのグリッドの例を確認しましたが、すべて同じ問題があります。単一の選択グリッドではマウスの複数選択ができなくなりますが、Shiftキーと、、、HOME
またはをEND
使用して複数選択できます。そして、レコードの選択を解除することは不可能です。PAGE UP
PAGE 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
キーボードで複数選択したくないだけで、すべてのキーボードナビゲーションを無効にしたくありません。