【问题标题】:Datatables 1.10 Responsive search expand to show child rowsDatatables 1.10 响应式搜索展开以显示子行
【发布时间】:2016-09-23 08:42:30
【问题描述】:

我正在使用带有列控制子行的响应式扩展的 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']
  });
});

【问题讨论】:

    标签: search children responsive datatables-1.10 expandable


    【解决方案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() 意外参与的自定义点击处理程序。

    这当然会打开任何子行,无论过滤后的值是否实际存在于隐藏或可见列中。

    【讨论】:

    • 嗨大卫!非常感谢您的帮助。我认为每次击键都会触发点击。因此,如果我以“5407”为例……“5”打开子行,“54”关闭它们,“540”打开它们,“5407”关闭它们。如果搜索过滤器不为空(展开子行),是否可以触发一次点击,当它重置为空白(折叠子行)时再次触发?
    • 你好@davidkonrad。我做了一些研究,找到了一种实现 searchWait 的方法。现在 click.dtr 仅在 5 秒间隔后激活。这是我的新小提琴:jsfiddle.net/lbriquet/wjx9tLLL 但是,我正在努力寻找一种方法来在清除搜索字段时再次调用 click.dtr。我认为这样的事情应该可以工作,但无法弄清楚如何实现它。 $('input[type="search"]').val('').keyup()
    • @lbriquet,答案对您有帮助还是我应该删除它...?
    猜你喜欢
    • 1970-01-01
    • 2021-08-17
    • 2015-08-08
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2014-05-17
    • 1970-01-01
    相关资源
    最近更新 更多