複数選択の動作に期待していたのは、特別なキーが押されていない限り、通常どおりに動作することです。つまり、行を選択していて、他のキーを押さずに別の行をクリックすると、新しい行が選択され、古い行の選択が解除されます。jqGridの標準オプションを使用すると、常に通常の動作を選択するか、常に複数選択するかを選択できます。特別なキーが押されたときだけ複数選択することはできません。
これを達成する方法はありますか?
複数選択の動作に期待していたのは、特別なキーが押されていない限り、通常どおりに動作することです。つまり、行を選択していて、他のキーを押さずに別の行をクリックすると、新しい行が選択され、古い行の選択が解除されます。jqGridの標準オプションを使用すると、常に通常の動作を選択するか、常に複数選択するかを選択できます。特別なキーが押されたときだけ複数選択することはできません。
これを達成する方法はありますか?
jqGridにはいくつかの選択戦略があり、すべてがを使用してmultiselect:trueいます。そこで示すために、3つの例を作成しました。
multiselect:true:http ://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm 。これはあなたが気に入らない標準的な振る舞いです。multiboxonly:true:http ://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect3.htm 。この振る舞いがあなたに必要なものであるように私には思えます。multikey:"ctrlKey":http ://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect4.htm 。Ctrlが押された場合にのみ、行が選択または選択解除されます。私があなたの質問を正しく理解しているなら、あなたは両方を定義し、multiselect:trueあなたmultiboxonly:trueが好きな振る舞いを受け取るべきです。
私があなたの質問を誤解し、あなたが何か他のことを意味している場合は、上記の例に基づいて、言い換えればこれを説明してください。
どういうわけか次のような動作を模倣したいという同じ質問に出くわしました:-jqGridの行をクリックするときに単一選択-行をキークリックするときに複数選択(CTRL +クリックなど)
私のソリューションでは、jqGridの「beforeSelectRow」イベントを使用して、クリックイベントをハンドラーに渡します。ハンドラーは、プレーンクリックと「キー付き」クリックを区別します。キークリックはパススルーです。プレーンクリックは、イベントがバブルスルーすることを許可するよりも、最初に前の選択を削除します。
function(rowid,e) {
if (e.ctrlKey==true) {
return true;//CTRL clicked-->multi select
} else {
$('#CoolGrid').jqGrid('resetSelection');//Reset existing select
return true;//Pass through new item selection
}
}
もちろん、これは少し短くしたいかもしれませんが、そうすればもっと明確に見えたと思います。
このためにマルチキーもマルチボックスのみのオプションも必要ありません。もちろん、複数選択オプションはtrueに設定する必要があります。