jQuery dataTables プラグインを使用して、アプリケーションの高度なテーブルを作成しています。要件の 1 つは、「折りたたみ可能な」行 (グループではありません!) を持つことです。たとえば、行はキャンペーンを表し、子キャンペーンを持つ場合があります。子行の構造は (基本的に) 親テーブルと同じです - 同じセル、同じデータ型です。
ただし、子行は親テーブル自体に影響を与えるべきではありません。つまり、ページあたりの行数は同じままにする必要があり、子行は親行とは別に並べ替えてはならず、常にバインドされたままにする必要があります。したがって、そのためにfnAddData() API func を使用することはできません。
もう 1 つのトリッキーな要件は、複数レベルの折りたたみ可能な行を持つ可能性です (例: 子キャンペーンの子キャンペーンなど)。
そのためにfnOpen() API 関数を使用していました。これにより、任意の行を「開く」ことができ、それに子ブロックを追加できます。通常、必要なものをそこに挿入できます。dataTables 1.8.2 で問題なく動作していました。次のようなコードを使用して子行を生成しました。
$(childRowData).each(function(){
row = $(oTable.fnOpen(row.get(0), $(this), "child_row"));
$(row).addClass('child_row');
});
一般に、現在の行 (上記で定義) を「開き」、子行にデータを挿入し、サイクルで子行を「開き」、それに子を追加するなどです。
しかし、dataTables 1.9.0 の時点では、親行を「開く」ことだけが許可されており、一度しか実行できないようです。
もちろん、サブテーブルを作成し、それに $.dataTable()を適用して子行に挿入することもできますが、特に 3 ~ 4 レベルの深さがある場合は、やや不十分で高価なソリューションのように思えます。
dataTables に折りたたみ可能な行を実装する他の方法はありますか?