Я работаю над веб-приложением MVC, которое использует библиотеку jquery DataTables для отображения некоторых клиентов и связанных данных о них. Я добавил настраиваемый фильтр с помощью флажка для сортировки клиентов по тому, активны они или нет (просто проверяет значение типа bool для каждой строки).
Флажок работает и сортирует данные, но работает только после того, как меняли пару раз.
$.fn.dataTable.ext.search.push(
function (settings, data, dataIndex) {
var isActiveFilter = $('#isActiveFilter').is(':checked');
if (isActiveFilter) { // takes out any rows where IsActive is False
if (data[13] == 'False') {
return false;
}
}
return true;
}
);
$(document).ready(function () {
var table = $("#example").DataTable({
//There must be an entry for each column, null if nothing to add
"columns": [ //expand button - 0
{
"className": 'details-control',
"orderable": false,
"data": null,
"defaultContent": ''
},
null, // First name - 1
null, // last name - 2
null, // organization - 3
null, // status - 4
null, // email - 5
null, // phone number - 6
{ "visible": false }, // sys id - 7
{ "visible": false }, // created date - 8
{ "visible": false }, // last updated date - 9
null, // Contact Event Created date - 10
{ "visible": false }, // Contact Event Note - 11
{ "visible": false }, // Contact Event OutcomeSysID - 12
{ "visible": false }, // customer IsActive - 13
],
"order": [[9, "asc"]],
"columnDefs": [
{ "width": "20px", "targets": 0 }
],
initComplete: function () {
$("div.dataTables_length")
.append('<span style="display:inline-block; width: 20px;"></span><input type="checkbox" id="isActiveFilter" checked="checked"/> <label for= "isActiveFilter" > Active Only</label >');
}
});
// event listener for IsActive filter
$('#isActiveFilter').on('change', function (e) {
table.draw()
});
});
Я знаю, что фильтр в настоящее время настроен только на перерисовку таблицы при «изменении», но я не уверен, как его вызвать, чтобы таблица фильтровалась с помощью IsActive при инициализации страницы нагрузки.