2011-08-15 15 views
0

previous questionの拡張として、デフォルトで自動的に行を選択したいと思います。 this responseでは、loadCompleteを使用してサーバー要求の後に行を選択します。しかし、私は一度サーバーから要求し、その後はローカルデータを使用します。代わりに、列が整理されるたびに行を再選択する必要があります。グリッドは検索されます。基本的に、データのビューが変更されるたびに。jqgridデフォルトで列の値に基づいて行を選択します

明示的なROWIDではなく列(book_id)に基づいて行を選択するので、回答はhereで適切でしょうか?または、jqGridには、この目標を達成するための明示的なメソッド(onUpdateGridなど)がありますか? onPagingonSortColの両方でコードを複製するだけで済むようになりました。 gridCompleteは私がやりたいだろうように見える

function populateBookRefs(ids){ 
    values = ids.split(','); 
    grid.jqGrid({ 
    ... 
    loadComplete: function(){ //event executed after server request 
     for(var i=0; i<values.length; i++){ 
      grid.jqGrid('setSelection',values[i],true); 
     } 

    } 
    ... 
    }); 
} 

答えて

2

fav_books列のdataInit方法:

initBookEdit: function(elem){ 
    //populate reference table 
    populateBookRefs($(elem).val()); 

    //display dialog which contains reference table 
    //pressing OK button on dialog saves all id's as a 
    //comma delimited list in the main table 
    $('#bookRefPopup').dialog({ 
    buttons: { 
    "OK": function(){ 
     var selectedRows = bookRefTable.jqGrid('getGridParam', 'selarrrow'); 
     var selectedIds = new Array(); 
     for(var i=0; i<selectedRows.length; i++){ 
      var changedRow = bookRefTable.getRowData(selectedRows[i]); 
      var book_id = changedRow['book_id']; 
      selectedIds.push(book_id); 
     } 
     var editedRow = $('#mainTable').jqGrid('getGridParam', 'selrow'); 
     $('#mainTable').jqGrid('setCell',editedRow, 'docs_ref', selectedIds, null, null, true); 
     $('#mainTable').trigger('reloadGrid'); 
     $(this).dialog("close"); 
    }, 
    Cancel: function() { 
     $(this).dialog("close"); 
    } 
}//close buttons 
    });//close dialog 
} 

と参照テーブルの初期化

gridComplete: function(){ 
    var grid_ids=grid.jqGrid('getDataIDs'); 
    for(var i=0; i<grid_ids.length; i++){ 
     var rowid = grid_ids[i]; 
     var aRow = grid.jqGrid('getRowData',rowid); 
     var book_id = aRow['book_id']; 
     if($.inArray(book_id,values)!=-1){ 
      grid.jqGrid('setSelection',rowid,true); 
     } 
    } 
} 
+3

あなたのようなすべての行( 'getDataIDs'に関して)の列挙は、多くの行の場合に非常に遅く動作します。 [the another](http://stackoverflow.com/questions/5664587/jqgrid-load-large-data-set-without-pagination/5690583#5690583)を見てください。はるかに効果的な列挙方法を示しています。 'ui-state-disabled'クラスの設定を' setSelection'を呼び出すように変更するだけです。 – Oleg

+0

潜在的な問題を抱える時間をとってくれてありがとう。とても有難い! – Andrea

+0

あなたはようこそ! – Oleg

関連する問題