DataTable() - 隐藏多列与特定值匹配的所有行

问题描述 投票:0回答:1

我目前有一个DataTable()uhm表,它可以根据选择框进行过滤。

我有3列兴趣5,6,7和这个特殊的过滤器我想做2件事。

  1. 仅显示第6行和第7列完全等于“0”,“0”的行
  2. 隐藏第5,6和7列完全等于“0”,“0”,“0”的所有行

所以实质上所有剩余的行都将包含:!=“0”,“0”,“0”,隐藏所有其他排列。

现在我有了第1部分的工作,即:

$('.dataTable').DataTable().column(5).search('', false, false, false).draw();
$('.dataTable').DataTable().column(6).search('^0$', true, false, false).draw();
$('.dataTable').DataTable().column(7).search('^0$', true, false, false).draw();

但我完全被第2部分困住了。

javascript jquery datatables
1个回答
0
投票

我认为这是一种解决方法,因此根据具体情况,对于发现自己处于同样情况的其他人来说,它可能无法在100%的情况下发挥作用,但对于我的困境,它解决了这个问题。

基本上,我在PHP中,在生成表的位置计算行中的3个类别(a,b,c)中的哪一个。将其添加到行上的data-search =“”标记,然后搜索该行。

<select name="type" id="type">
    <option value='' selected>All Types</option>
    <option value="a">A</option>
    <option value="b">B</option>
    <option value="c">C</option>
</select>

//... 

foreach($pos as $po) {
//...
    if($po['one'] == $po['two'] && $po['two'] == $po['three'] && $po['three'] == 0)
        $po_type = 'b';
    elseif($pov['one'] == 0)
        $po_type = 'b';
    else
        $po_type = 'a';
    <td data-search="<?php echo $po_type; ?>"><?php echo $po['one']; ?></td> // column 5, relevant in JavaScript
//...
}

//...

$('#type').change(function(){
  if($(this).val() != '') {
    $('.dataTable').DataTable().column(5).search('', false, false, false);
    $('.dataTable').DataTable().column(5).search($(this).val(), false, false, false).draw();
  }
  else {
    $('.dataTable').DataTable().column(5).search('', false, false, false);
  }
});

这是因为当对所述单元格执行搜索时,数据搜索属性会覆盖单元格值,当与生成表格时将逻辑移动到PHP相结合时,可以避免需要更复杂的组合和正则表达式搜索。 OP。

尽管如此,DataTable结束的解决方案既有趣又有助于类似的情况,这可能是不可行的。

© www.soinside.com 2019 - 2024. All rights reserved.