我有一个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而不是搜索,但似乎没有任何效果。
任何想法??
答案 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();
}
});