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

时间:2018-03-02 10:09:30

标签: javascript jquery datatables

我目前有一个基于选择框可过滤的DataTable()uhm表。

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

  1. 仅显示第6列和第6列的行。 7完全相同" 0"," 0"
  2. 隐藏第5,6和5列的所有行7完全相同" 0"," 0"," 0"
  3. 因此,实质上所有剩余的行都将包含:!=" 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部分困扰了。

1 个答案:

答案 0 :(得分: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结束的解决方案对于类似的情况来说既有趣又有帮助。这可能是不可行的。