在dataTable的单列中搜索多个值(可能使用数组?)

时间:2016-07-06 19:38:04

标签: javascript jquery datatable

我有一个dataTable,其中填充了草稿,待批准,已批准或已拒绝的项目。项目的状态位于一个特定列中。

我想在此专栏中搜索多种类型的状态。

例如,我想搜索待处理和已批准的项目,然后重新绘制表格,仅显示待处理或已批准的项目。

踢球者是我希望通过复选框动态更改此搜索字符串。

搜索使用硬编码值:

$('#theTable').DataTable().search('Pending').draw();

甚至

$('#theTable').DataTable().search('Pending'|'Approved').draw();

但我想根据复选框动态更改搜索字符串('待定' |'已批准'部分)。

所以......

if($("#Pending").is(":checked")) {
   searchString += 'Pending';
   $('#theTable').DataTable().search(searchString).draw();
}

if($("#Approved").is(":checked")) {
   searchString += 'Approved';
   $('#theTable').DataTable().search(searchString).draw();
}

但这不起作用。我尝试使用数组连接,使用fnFilter而不是搜索,但似乎没有任何效果。

任何想法??

2 个答案:

答案 0 :(得分:4)

这是通过使用数组添加搜索项来解决的,然后运行数组并使用管道连接它们。

以下是使用的内容:

 var whatsSelected = [];
 $.each($('.statusChk'), function () {
     if ($(this).is(":checked")) {
         whatsSelected.push('(?=.*' + $(this).val() + ')');
     }
 });

 $('#theTable').DataTable().search(whatsSelected.join('|'), true, false, true).draw();

添加的(?=.*字符串,然后关闭正则表达式(?我认为这是错误的做法)需要才能完成这项工作。

答案 1 :(得分:0)

在执行链式函数draw()之前,它似乎会缓存搜索参数。然后它将使用列[n] [data]中的参数发送一个到终点的调用:填充,以便您可以在服务器端脚本中处理它们。

我做了类似的事情:

$("#ddlTeam").change(function () {
                   var val= this.value;
                   if(val>0){
                       $('#example').DataTable().columns(9).search($("#ddlDomObject").val());
                       $('#example').DataTable().columns(5).search(val).draw();
                    }else{
                       $('#example').DataTable().columns(5).search('').draw();
                    }

                });