2016-09-23 44 views
0

我正在使用具有列控制子行的响应扩展的数据表1.10。 https://datatables.net/extensions/responsive/examples/child-rows/column-control.html数据表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

嗨大卫!非常感谢您的帮助。我认为每次击键都会触发点击。因此,如果我以“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