2011-07-20 48 views
4

Jqgridでは、いつでも1つのチェックボックスのみを選択するようにユーザーを制限したいと考えています。最後に選択された複数のチェックボックスを選択状態にすると、残りのチェックボックスは自動的に選択解除されます。jqgrid単一選択チェックボックス

マルチ選択属性をtrueに設定しました。しかし、以前に選択したアイテムを選択解除することはできません。もしそうなら、それは可能ですか?各列のチェックボックスを持つ

おかげ

答えて

9

あなたはbeforeSelectRowイベントを使用して、選択をリセットすることができます。

beforeSelectRow: function(rowid, e) 
{ 
    jQuery("#list47").jqGrid('resetSelection'); 
    return(true); 
} 

あなたはそれがどのように動作するか確認することができますので、私はあなたのためのfiddleを持っています。

+2

これを追加する必要があります:var myGrid = $( "#list47"); $( "#cb _" + myGrid [0] .id).hide();ここに記載されているようにマルチセレクションボタンを隠すには:http://stackoverflow.com/questions/6212571/jqgrid-multiselect-check-all-in-header-how-to-hide-it/6213082#6213082 – Matthieu

+1

また、グループ化がアクティブな場合(少なくともこの形式の場合)に動作します。 – Matthieu

2

は、一度に複数のをクリックしてできることを意味します。あなたが求めているのは、基本的にはmultiselect: falseの動作ですが、チェックボックスの列を使用しています。この場合、実際にチェックボックスを使用してもよろしいですか?

+1

+1、良い:


OnSelectRowbeforeSelectRow実装。 – Matthieu

0

私はこの質問が古いことを知っていますが、私はこのより良い解決策を見つけましたStack Post

あなたがしなければならないjqGridの次の2つのプロパティを設定されています

multiselect:true // multi-select checkboxes appear 

multiboxonly:true // checkboxes act like radio buttons where only one is selected at a time 

を私は単にこのJsFiddle

これは何だったのmultiboxonly設定を使用するLeftyXによって作られたバイオリンを更新しました必要だった。それは他の人を助けるかもしれない。 truemultiselect

1.設定multiboxonlyイベントonSelectRowbeforeSelectRowを定義2.

trueに:

あなたはいくつかのより多くのものをしなければならない

+0

はあなたのフィドルでさえ、今は動作していないようです。 – JunM

3

3.グローバルvを定義するariable:var lastSel;あなたはまだ選択を扱うことができるので、あなたは、複数選択アクティブせずに行をクリックした場合onSelectRowイベントがポップということも知って

onSelectRow: function (rowId, status, e) { 
     if (rowId == lastSel) { 
      $(this).jqGrid("resetSelection"); 
      lastSel = undefined; 
      status = false; 
     } else { 
      lastSel = rowId; 
     } 
    }, 
beforeSelectRow: function (rowId, e) { 
      $(this).jqGrid("resetSelection"); 
      return true; 
     } 
+2

私のために感謝の仕事.. !! – BlackHack123

関連する問題