2011-01-17 25 views
8

jqgridデモ(http://www.trirand.com/blog/jqgrid/jqgrid.html>詳細>マルチセレクション)では、ページングが有効な場合に現在のページ上の行のみが選択されていることがわかりました。jqgrid multiselectは、ページングが有効な場合のみ、現在のページ上の行を選択します。ページ間で行を選択する方法

複数のページにまたがるようにするためのヒント。または他の代替ソリューション?

答えて

3

私はこの質問がほこりのようなものだと知っていますが、最近私はこの機能の必要性があり、私はそれを行うよりはるかにクリーンな方法を検討しました。

各チェックボックスにイベントを添付する代わりに、jqGridのonSelectRowイベントとonSelectAllイベントを使用するのはなぜですか?行が選択されたら、選択された行のリストに(idに基づいて)この行が含まれているかどうかを確認します。それがそこになくて選択されていればそれをリストに追加し、それがそこにあってもはや選択されていなければ削除する。すべての行が選択されている場合は、それらの行を繰り返します。

var $grid = jQuery("#myGrid"); 
var updateIdsOfSelectedRows = function (id, isSelected) { 
    var contains = idsOfSelectedRows.contains(id); 
    if (!isSelected && contains) { 
     for(var i=0; i<idsOfSelectedRows.length; i++) { 
      if(idsOfSelectedRows[i] == id) { 
       idsOfSelectedRows.splice(i, 1); 
       break; 
      } 
     } 
    } 
    else if (!contains) { 
     idsOfSelectedRows.push(id); 
    } 
}; 

$grid.jqGrid({ 
    .... 
    onSelectRow: function(rowid, status){ 
     updateIdsOfSelectedRows(rowid, status); 
    }, 
    onSelectAll: function (aRowids, status) { 
     var i, count, id; 
     for (i = 0, count = aRowids.length; i < count; i++) { 
      id = aRowids[i]; 
      updateIdsOfSelectedRows(id, status); 
     } 
    }, 
    .... 
)}; 

これは、解決策を探している他のユーザーに役立ちます。

0

私は、1ページでいくつかの行を選択してから別のページに移動し、さらにいくつかの行を選択してそれらの選択をすべて保持することを前提としています。

各チェックボックスで選択イベントを処理する必要があります。イベントハンドラをeach $("#cb_my_grid")にアタッチし、選択した項目の配列を保持します。次に、データが必要なとき(ページが送信されたときなど)、配列の値を送信できます。

関連する問題