Datatables 1.10 Адаптивный поиск развернуть, чтобы показать дочерние строки

Я использую Datatables 1.10 с адаптивным расширением с дочерними строками, контролируемыми столбцами. https://datatables.net/extensions/responsive/examples/child-rows/column-control.html

Как настроить поиск так, чтобы совпадающие дочерние строки были расширены/видны?

Например, на этой странице, если я ищу «5407», таблица фильтруется, чтобы показать родительскую строку, но совпадение находится только в дочерней строке. Как я могу получить результат поиска, чтобы показать соответствующую дочернюю строку?

https://jsfiddle.net/lbriquet/Ldgutob0/

$(document).ready(function() {
  $('#example').DataTable({
    responsive: {
      details: {
        type: 'column'
      }
    },
    columnDefs: [{
      className: 'control',
      orderable: false,
      targets: 0
    }],
    order: [1, 'asc']
  });
});

person lbriquet    schedule 23.09.2016    source источник


Ответы (1)


Вы можете автоматически открывать все дочерние строки после поиска в обработчике search.dt:

$('#example').on('search.dt', function() {
  table
   .rows({ filter: "applied" })
   .every(function(rowIdx, tableLoop, rowLoop) {
     $('td:first-child', this.node()).trigger('click.dtr');
   })
})

Обновленная скрипта -> https://jsfiddle.net/Ldgutob0/2/ Каждый раз, когда фильтр/поиск обрабатывается, все видимые строки будут открывать свои дочерние строки. Я заметил суффикс .dtr, исследуя код, это просто пространство имен, которое, как мне кажется, является аббревиатурой от «dataTables responsive», полезно знать, есть ли пользовательские обработчики кликов, которые вы не хотите случайно задействовать trigger().

Это, конечно, откроет любую дочернюю строку, независимо от того, действительно ли отфильтрованное значение присутствует в скрытых или видимых столбцах.

person davidkonrad    schedule 26.09.2016
comment
Привет, Дэвид! Большое спасибо за помощь. Я думаю, что щелчок срабатывает при каждом нажатии клавиши. Итак, если я возьму пример 5407... 5 открывает дочерние строки, 54 закрывает их, 540 открывает их и 5407 закрывает их. Возможно ли, чтобы щелчок срабатывал один раз, если поисковый фильтр не пустой (расширение дочерних строк), и снова, когда он сбрасывается до пустого (свертывание дочерних строк)? - person lbriquet; 26.09.2016
comment
Привет снова @davidkonrad. Я провел небольшое исследование и нашел способ реализации searchWait. Теперь click.dtr активируется только через 5 секунд. Вот моя новая скрипка: jsfiddle.net/lbriquet/wjx9tLLL Однако я изо всех сил пытаюсь найти способ снова вызвать click.dtr, когда поле поиска очищено. Я думаю, что что-то подобное должно работать, но не могу понять, как это реализовать. $('вход[тип=поиск]').val('').keyup() - person lbriquet; 03.10.2016
comment
@lbriquet, тебе помог ответ или мне его удалить ...? - person davidkonrad; 22.08.2017