Я использую подключаемый модуль jQuery dataTables для построения расширенных таблиц для нашего приложения. Одним из требований является наличие «разборных» строк (не групп!): например. строки представляют кампании, и у них могут быть дочерние кампании. Структура дочерних строк (в основном) такая же, как и в родительской таблице — те же ячейки, те же типы данных.
Но дочерние строки не должны влиять на саму родительскую таблицу: я имею в виду, что количество строк на странице должно оставаться прежним, дочерние строки не должны сортироваться отдельно от родительской строки, они всегда должны оставаться связанными. Поэтому я не могу использовать для этого функцию fnAddData()API.
И еще одно сложное требование — возможность иметь многоуровневые сворачиваемые строки (например, дочерние кампании для дочерних кампаний и т. д.).
Для этого я использовал функцию 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?