У меня есть таблица из таблиц данных.Есть флажок, который при нажатии фильтрует таблицу для отображения только тех данных, которые я хочу видеть.Проблема в том, что когда я снимаю флажок, таблица становится глючной.Функция table.destroy (), по-видимому, возвращает таблицу обратно в прежнее состояние, хотя выглядит так, будто она слишком сильно разрушает (строки на странице внезапно игнорируются + больше не могут щелкать по ячейке, которая открывается в другом окне).Я предполагаю, что destroy () - это неправильный способ вернуть обратно к исходной таблице / данным, когда не проверено.Так какой же правильный путь?
Вот что происходит: 1. нажмите на флажок: правильно фильтруйте данные 2. снимите флажок: таблица выглядит так, как будто она вернулась в нормальное состояние (но на самом деле это не так) 3.Снова установите флажок: больше не фильтрует данные правильно.(таблица теперь пуста) 4. теперь не имеет значения, если я отмечу или сниму флажок, таблица остается прежней (пустой)
Вот мой код:
var checkbox = $("#checkB");
checkbox.click(function () {
var table = $('#WTM_LOG').DataTable();
if (checkbox.is(":checked")) {
$.fn.dataTable.ext.search.push(
function (settings, data, dataIndex) {
var num = Number(data[4]);
if (num > 0) {
return true;
}
return false;
}
);
table.draw();
}
else {
table.destroy();
}
});
Этокак я получаю свои данные для данных:
$(function LogTable() {
//var sCsrfToken = $("input[name='__RequestVerificationToken']").val();
//if (typeof sCsrfToken !== "string") {
// sCsrfToken = "";
//}
$.ajax({
url: 'Home/GetTaskLog',
type: 'post',
processData: 'false',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
xyz(data)
}
});
});
function xyz(data) {
$('#WTM_LOG').dataTable({
//destroy: true,
'dom': 'rtp',
'order': [[0, 'desc']],
//"ordering": false,
"pageLength": 20,
"data": JSON.parse(data),
selector: ':not(:first-child)',
"columns": [
{
"data": "TaskSchedulerLogUid",
"visible": false
},
{
"data": 'TaskName',
"visible": false
},
{
"data": 'StartDate',
"render": function (data, type, row) {
var dateSplit = data.split("");
if (type === "display" || type === "filter") {
return dateSplit[8] + dateSplit[9] + '/' + dateSplit[5] + dateSplit[6] + '/' + dateSplit[0] + dateSplit[1] + dateSplit[2] + dateSplit[3] + " " + dateSplit[11] + dateSplit[12] + ":" + dateSplit[14] + dateSplit[15] + ":" + dateSplit[17] + dateSplit[18];
}
return data;
},
},
{
"data": "EndDate",
"render": function (data, type, row) {
var dateSplit = data.split("");
if (type === "display" || type === "filter") {
return dateSplit[8] + dateSplit[9] + '/' + dateSplit[5] + dateSplit[6] + '/' + dateSplit[0] + dateSplit[1] + dateSplit[2] + dateSplit[3] + " " + dateSplit[11] + dateSplit[12] + ":" + dateSplit[14] + dateSplit[15] + ":" + dateSplit[17] + dateSplit[18];
}
return data;
},
},
{
"data": "ErrorCount",
"render": function (data, type, row) {
if (type === 'display') {
return (data === 0)
? data = '<span data-search="0"></span>'
: data = '<span data-search="1" type="hidden" class="fas fa-exclamation-triangle" style="color:red"></span>';
}
return data;
},
},
{
"data": "EventCount",
"render": function (data, type, row) {
//var id = "details" + row.TaskSchedulerLogUid; id="' + id + '"
return (data > 0)
? data = '<span data-search="details" type="hidden" class="fas fa-list" style="color:blue"></span>'
: data = '';
},
},
],
columnDefs: [
{
targets: 2
}
]
});