Вы можете сделать это следующим образом:
найдите метод filter . Код :
var table = $('#mydb').DataTable({
"serverSide": true,
"ajax": "/myapi/?format=datatables",
"columns": [
{data: "item",
{data: "Price"},
{data:"Status"}
]
});
Затем выполните фильтрацию следующим образом:
var filteredData = table
.column( 2 )
.data()
.filter( function ( value, index ) {
return value == "Free";
} );
Вы можете ajax к API и прикрепить отфильтрованный ответ к вашему конструктору данных (однако, поскольку вы используете серверную часть, я предполагаю, что вы выполняете нумерацию страниц со стороны сервера, поэтому вам потребуется изменить следующий код для работы с этим)
Код:
$.ajax({
url: "/myapi/?format=datatables",
type: 'GET',
dataType: 'JSON'
})
.done((response)=>{
if(response != undefined){
let data = response.data,
filtered_data = [];
$.each(data,function(index,value){
if(value.Status == "Free"){
filtered_data.push({
"item": "Someitem",
"Price": 120
});
}
})//end each
//fill the table
var table = $('#mydb').DataTable({
"serverSide": true,
"data": filtered_data,
"columns": [
{data: "item",
{data: "Price"}
]
});
}
})
Редактировать: После выполнения jsfiddle я понимаю, что мне не хватает метода удаления дляПервый вариант, так что вот исправление:
var filteredData = table
.rows()
.indexes()
.filter( function ( index, value ) {
console.log(table.row(value).data().Status);
return table.row(value).data().Status == "Taken";
} );
table.rows( filteredData )
.remove()
.draw();
jsfiddle
Надеюсь, это поможет =)