2016-09-23 13 views
0

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

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

Например, на этой странице, если я ищу «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'] 
    }); 
}); 

ответ

0

Вы можете автоматически открыть все дочерние строки после поиска в 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 отзывчивым», полезно знать, есть ли пользовательские обработчики кликов, которые вы не хотите случайно задействовать в trigger().

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

+0

Hi David! Большое вам спасибо за помощь. Я думаю, что щелчок запускается с каждым нажатием клавиши. Итак, если я возьму пример «5407» ... «5» открывает дочерние строки, «54» закрывает их, «540» открывает их, а «5407» закрывает их. Возможно ли, чтобы щелчок запускался один раз, если фильтр поиска не пуст (расширяя дочерние строки) и снова, когда он сбрасывается в пустые (сворачивает дочерние строки)? – lbriquet

+0

Привет, снова @davidkonrad. Я провел несколько исследований и нашел способ реализовать searchWait. Теперь click.dtr активируется только через 5 секунд. Вот моя новая скрипка: https://jsfiddle.net/lbriquet/wjx9tLLL/ Тем не менее, я изо всех сил пытаюсь найти способ снова нажать click.dtr, когда поле поиска будет очищено. Я думаю, что что-то вроде этого должно работать, но не может понять, как его реализовать. $ ('input [type = "search"]'). Val (''). Keyup() – lbriquet

+0

@lbriquet, ответ помог вам или я должен удалить его ...? – davidkonrad