行の選択を行セレクターのチェックボックスのみで行いたい場合は、rowSelectionChanging イベントが checkBoxStateChanging イベントと checkBoxStateChanged イベントの間で発生している場合を除いて、rowSelectionChanging イベントをキャンセルしてください。
// 行セレクターのチェックボックスの状態が変更中かどうかを示すフラグ。 // true: 行セレクターのチェックボックスの状態が変更中 // false: それ以外 var isCheckBoxStateChanging = false; $(document).ready(function(){ $("#grid1").igGrid({ // ... (略) ... , features : [ { name : "RowSelectors" , enableCheckBoxes: true , enableRowNumbering: false , checkBoxStateChanging: function (evt, ui) { // 行セレクターのチェックボックスの状態が変更中であることを示すフラグをtrueにする。 isCheckBoxStateChanging = true; } // End of checkBoxStateChanging , checkBoxStateChanged: function (evt, ui) { // 行セレクターのチェックボックスの状態が変更中であることを示すフラグをfalseにする。 isCheckBoxStateChanging = false; } // End of checkBoxStateChanged } , { name: "Selection" , mode: "row" , multipleSelection: true , enableCheckBoxes: true , activation: true , rowSelectionChanging: function(evt, ui){ // 行セレクターのチェックボックスのステートが変更中である場合以外は、イベントをキャンセルする。 if(!isCheckBoxStateChanging) return false; } // End of rowSelectionChanging } ] // ... (略) ... }); });
なおこの方法は行セレクターのチェックボックス内をクリックした時のみ、
- checkBoxStateChanging
- rowSelectionChanging
- checkBoxStateChanged
の順でイベントが発生していることに着目した方法です。
イベントの発生順はバージョンアップによって変更される場合がありますので、バージョンアップの際は十分な動作確認テストを行ってください。
(※この記事は 2020 年 4 月 10 日現在の内容です)
サンプル
API リファレンス
- checkBoxStateChanging イベント
- checkBoxStateChanged イベント
- rowSelectionChanging イベント