Datables re-write
Просьба, подсказать, как реализовать перезапись таблицы, на данный момент таблица формируется следующим образом:
$('#list_stp tbody').on('click', '.shark', function(){
var name_file = $(this).closest('.shark').attr('data-text');
$('#table_of_pcap').DataTable({
'processing': true,
'serverSide': true,
'serverMethod': 'post',
'ajax': {
'url':'/dash/read_pcap',
data: {name_file: name_file}
},
'lengthMenu': [[10, 25, 50], [10, 25, 50]],
searching: false,
sort: false,
'columns': [
{ data: 'packet_number' },
{ data: 'time' },
{ data: 'source' },
{ data: 'destination' },
{ data: 'protocol' },
]
});
});
соответветно при клике по .shark формирую таблицу, при свитче(попытки открыть другую таблицу) перезаписать текущую, возвращается ошибка Cannot reinitialise DataTable.
пробовал retrieve и destroy ошибку не решило
Ответы (1 шт):
Когда инициализируете таблицу, можно добавить параметр, условно, name_file (ну и на серверной части смотреть значение name_file),
и передавать данные через скрытое поле (не помню, с переменной это работает или нет - можете попробовать), пр. <input type="hidden" id="name_file" value="" /> - изначально оно пустое
$('#table_of_pcap').DataTable({
...
'ajax': {
'url': '/dash/read_pcap',
'type': "POST",
'data': function ( d ) {
d.name_file = $('#name_file').val(); // берём значение скрытого поля
}
},
...
});
p.s. удалил лишний код чтоб не занимал место
По нажатию на "shark" - записывать значение в скрытый input и перезагружать таблицу
$('#list_stp tbody').on('click', '.shark', function(){
var name_file = $(this).closest('.shark').attr('data-text');
$('#name_file').val(name_file); // записываем значение в скрытый инпут
$('#table_of_pcap').DataTable().ajax.reload(); // перезагружаем таблицу
});
Если "нужно" после перезагрузки очищать выбранное значение то можно очищать значение на drow событии таблицы или после перезагрузки таблицы