【发布时间】:2016-03-22 08:13:02
【问题描述】:
我像这样在我的 jquery 中构建一个数据表:
var ticketDataTable = $("#ticketDataTable").DataTable({
serverSide: true,
ajax: {
url: ajaxUrl,
type: "POST",
data: function(data) {
data.ticketStatusFilter = ketStatusCheckboxes.filter(':checked')
.map(function() { return this.value; }).get()
.join(';')
}
},
columns: [
{
name: "ticket.ticketNumber",
data: "0.ticketNumber"
},
{ },
{ },
{ },
{ },
{ },
{ },
{ },
{ },
{ },
{ },
{ },
{ },
{ },
{ },
{ }
],
bSortCellsTop: true,
dom: 'rt<lp>',
order: [[2, "desc"]] // Sort by descending date
});
所有列的构造方式相同。然后,我使用 sumoSelect 插件创建一个带有复选框的下拉列表来进行多重过滤。
$("table#ticketDataTable thead tr th#multiSelectFilter").find("select").SumoSelect({ selectAll: true });
效果很好。然后,当输入改变时(当我检查选项时),我这样做:
var arr = $("table#ticketDataTable thead tr th#multiSelectFilter").find("select")[0].sumo.getSelStr();
我得到这样的结果:"FIRST|SECOND|THIRD" 或 "SECOND" 或 "FIRST|SECOND"。
ticketDataTable.column(5).search(arr,true,true).draw();
但它只适用于一种选择。如果我有多个(如“FIRST|SECOND”),它就不起作用。
【问题讨论】:
-
您必须创建一个自定义过滤器并使用它进行相应的过滤。检查此datatables.net/examples/plug-ins/range_filtering.html,如果您需要更多帮助,请告诉我
-
是的,但我不想在数字列上过滤,而是在文本/字符串列上过滤。
-
这只是一个例子。您必须相应地更改您的逻辑..该函数还将为每一行运行,因此 return true 将使该行可见 return false 将删除它..您需要编写一个逻辑来说明列值是否为 this 或 that 或那..根据您的多项选择,然后相应地返回真或假
-
我这样做了,但是当我调用 ticketDataTable.draw() 时,什么都没有!是参数 serverside = true 吗?
-
天啊!!没有看到该代码...服务器端确实很复杂..所以请告诉我您是否只想过滤 UI 上可用的数据,或者它也考虑服务器数据??
标签: javascript jquery datatable datatables