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

6
我有一个dataTable,其中包含草稿、等待批准、已批准或已拒绝的项目。这些项目的状态位于一个特定的列中。
我想要在该列中搜索多种类型的状态。
例如,我想要搜索等待批准和已批准的项目,然后重新绘制表格,仅显示那些处于等待批准或已批准状态的项目。
关键是我想通过复选框动态更改此搜索字符串。
搜索使用硬编码值:
$('#theTable').DataTable().search('Pending').draw();

并且甚至
$('#theTable').DataTable().search('Pending'|'Approved').draw();

我希望能够根据复选框动态更改搜索字符串(即“Pending”|“Approved”部分)。

因此...

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

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

但是这并不起作用。我尝试过连接,使用数组,使用fnFilter而不是搜索,但似乎没有任何作用。有什么想法吗?
2个回答

13

通过使用数组添加搜索项,然后遍历该数组并使用管道连接它们来解决了这个问题。

下面是使用的内容:

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

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

需要添加字符串(?=.*,然后关闭正则表达式(我认为这就是false的作用)才能使其工作。


0

看起来它会缓存搜索参数,直到您执行链接函数draw()。然后它将使用列[n][数据]中的参数发送调用到终点:填充,以便您可以在服务器端脚本中处理它们。

我做了类似于这样的事情:

$("#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();
                    }

                });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接