現在、グリッドを更新するために次のコードを使用しています。
setInterval(function(){ jQuery("#grid").trigger("reloadGrid"); },10000);
それはうまくいきます。しかし、拡張されたサブグリッドのソリューションが必要です。グリッドが更新されると、展開されたサブグリッドが閉じます。
展開されたサブグリッドを閉じずにグリッドを更新する方法はありますか?
現在、グリッドを更新するために次のコードを使用しています。
setInterval(function(){ jQuery("#grid").trigger("reloadGrid"); },10000);
それはうまくいきます。しかし、拡張されたサブグリッドのソリューションが必要です。グリッドが更新されると、展開されたサブグリッドが閉じます。
展開されたサブグリッドを閉じずにグリッドを更新する方法はありますか?
これは古い質問ですが、同じことに苦労したので、私がやったことを共有したいと思いました。Eonasdan の答えは正しいです。私の場合、subGridRowExpanded および subGridRowCollapsed イベントにコードを追加して、展開された行の行 ID を格納しました (一度に 1 つの行しか展開できませんでしたが、コレクションも使用できます)。次に、テーブルの loadComplete イベントにコードを追加して、ポストバック後に折りたたまれた行を再度開きます。1. サブグリッドを再展開しても、何らかの理由でデータが保持されない。そのため、サーバーに戻って取得する必要がありました。サブグリッド行 (グリッドの ID、アンダースコア、および行 ID を持つ) を再送信することでそれを行いました。2. 何らかの理由で、タイマーを使用し、遅延後にサブグリッドを拡張する必要があります (1 ミリ秒でも機能するようです)。loadComplete イベント自体の間はグリッドを展開できないようですが、ティックを待つと正常に動作します。
このように:
var expandSubGrid = function(){
$('#grid').jqGrid('expandSubGridRow', expandedRowID);
$('#grid_' + expandedRowID).trigger('reloadGrid');
};
//the loadComplete event handler which was wired up when I created the grid
var grid_loadComplete = function () {
//expand the subgrid
window.setTimeout(expandSubGrid, 1);
};
彼らのデモページがTRクラスをsgcollapsedからsgexpandedに変更しているようです。更新前に開いているTRの配列を保持し、更新後に再度開くことができると思います。
jqGridについてはほとんど知りませんが、チャットから正しい方向を示しているように見えるので、これを投稿すると思いました。