私はjqGrid 1.5.2を使用しています。サブグリッドとしてグリッドを持ちます。親とサブグリッドの両方がソート許可なしのセル編集モードです。親グリッドのloadCompleteイベントにjqgrid - 実行時に定義されたサブグリッドを動的に追加/削除する方法
、私が成功した以下のように行のデータに依存サブグリッドの一部を除去:
loadComplete: function() {
var dataIds = $('#mygrid1').jqGrid('getDataIDs');
for (var i = 0;i < dataIds.length; i++) {
var data = $("#mygrid1").jqGrid('getRowData', dataIds[i]);
if (data[i].hasChild='N') {
var grid = $("#mygrid1");
$("#"+dataIds[i]+" td.sgcollapsed",grid[0]).unbind('click').html('');
}
}
}
問題が
データであり、[I] .hasChildは親グリッドのユーザーが変更できるので、サブグリッドをその行に対して再度展開することができます。
私は戻っ要素をイベントをバインドする「クリック」する
$("#"+rowid+" td.sgcollapsed",grid[0]).bind('click').html('+');
を試してみました。しかし、それは動作しません、 '+'記号がサブグリッドの列に戻って接続されていますが、クリックイベントは発生しません...
誰かが私のアプローチのための任意のアイデア、解決策または代替を教えてくださいできますか?ありがとうございました。
は、2012年1月6日にを更新: 終日採掘し、「試行とエラー」の後、私は成功に近い方法で、以下のようにコーディングを見つけました:
まず、私の前に各行のバインディングを削除し、配列に.clone(true、true)を指定して 'data and events data'を格納しようとしました。
currChild[rowid] = $("#"+rowid+"td.sgcollapsed",grid[0]).clone(true,true);
$("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html('');
そして、私が最初の行に戻す取り付けられたサブグリッドを見たとき、私は満足していた
$("#"+rowid+" td.sgcollapsed",grid[0]).replaceWith(currChild[rowid]);
バック要素にクローンを置き換えます。その後、もう一度バインドを解除して削除しようとしましたが、問題はありません。
しかし、同じ行の3回目の変更で、サブグリッドを再び行に戻そうとすると、行のサブグリッド列が失われ、その行の左に列がシフトします。
私はすべての単一行をテストし、行が列を失い、3回目の変更で左に移動するのと同じ動作をしました。
今は深夜です。まず寝るよ。どんな提案も聞いてくれることを楽しみにしており、私はこれをさらに進めることができます。ありがとうございました。