我目前有一个DataTable()uhm表,它可以根据选择框进行过滤。
我有3列兴趣5,6,7和这个特殊的过滤器我想做2件事。
所以实质上所有剩余的行都将包含:!=“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部分困住了。
我认为这是一种解决方法,因此根据具体情况,对于发现自己处于同样情况的其他人来说,它可能无法在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结束的解决方案既有趣又有助于类似的情况,这可能是不可行的。