我personnaly使用列定義結合iniComplete回調。 在這個例子中兩種類型的搜索,你可以添加許多不同的檢索(甚至沒有搜索)
$('#table').DataTable({
"ajax": {
"url": "/flux/ajax",
"dataSrc": "data",
"scrollX": true
},
"columns": [
{className: "select", "title": "Status", "data": "stat"}
{className: "text", "title": "Libellé", "data": "Lib"}}
],
initComplete: function() {
this.api().columns().every(function() {
var column = this;
if ($(column.header()).hasClass('select')) {
console.log(column);
var select = $('<select><option value="">' + $(column.header()).html() + '</option></select>')
.appendTo($(column.header()).empty())
.on('change', function (e) {
e.stopImmediatePropagation();
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search(val ? '^' + val + '$' : '', true, false)
.draw();
return false;
});
column.data().unique().sort().each(function (d, j) {
select.append('<option value="' + d + '">' + d + '</option>');
});
} else if ($(column.header()).hasClass('text')) {
var text = $('<input type="text" placeholder="' + $(column.header()).html() + '" />')
.appendTo($(column.header()).empty())
.on('keyup change', function() {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
if (column.search() !== this.value) {
column
.search(val)
.draw();
}
return false;
});
}
});
}
});
嗨維爾託德,也許我應該添加的,這是所有的服務器端處理。不錯的工作,但我可以看到這可以應用。 – CSharpNewBee