Я заполняю 2 таблицы данных одним вызовом ajax.Это 2 набора данных, помещенные в jQuery.ajax.По этой причине я должен использовать DataTable().clear().rows.add
для их обновления.Вот как выглядит начальная популяция:
pojQuery(function(){
jQuery.ajax({
url: '/api/?action=getStats',
type: 'GET',
dataType: 'json',
success: function(data) {
if(data.data.instances[0].Strategy != "None yet"){
anyInstance = true;
tableInterval = 4000;
}
console.log(data);
jQuery("#tablepress-1").DataTable({
"bProcessing": true,
//url:'/api/?action=getStats',
data: data.data.instances,
dataSrc: 'data',
"deferRender": true,
"columns": [
{ "data": "Item 1" },
{ "data": "Item 2" },
{ "data": "Item 3" },
{ "data": "Item 4" },
{ "data": "Item 5" },
//{ "data": "ID" }
],
"aoColumnDefs": [
{
"aTargets": [5],
"mData": "ID",
"mRender": function (data, type, full) {
if(anyInstance){
return '<a href="javascript:void(0)" onclick="return false;"><i class="fas fa-trash delIns" value="' + data + '"></i></a>';
}else{
return '...';
}
}
}
]
})
//var header1 = "<th>Item 1</th><th>Item 2</th><th>Item 3</th><th>Item 4</th><th>Item 5</th>";
//jQuery("#tablepress-1").append(header1);
var instanceTable = jQuery('#tablepress-1 th');
instanceTable.eq(0).text( "Item 1" );
instanceTable.eq(1).text( "Item 2" );
instanceTable.eq(2).text( "Item 3" );
instanceTable.eq(3).text( "Item 4" );
instanceTable.eq(4).text( "Item 5" );
jQuery("#tablepress-2").DataTable({
"bProcessing": true,
//url:'/api/?action=getUserTrades',
data: data.data.trades,
dataSrc: 'data',
"deferRender": true,
"columns": [
{ "data": "Item 1" },
{ "data": "Item 2" },
{ "data": "Item 3" },
{ "data": "Item 4" },
{ "data": "Item 5" },
{ "data": "Item 6" },
{ "data": "Item 7" }
]
})
var tradesTable = jQuery('#tablepress-2 th');
tradesTable.eq(0).text( "Item 1" );
tradesTable.eq(1).text( "Item 2" );
tradesTable.eq(2).text( "Item 3" );
tradesTable.eq(3).text( "Item 4" );
tradesTable.eq(4).text( "Item 5" );
tradesTable.eq(5).text( "Item 6" );
tradesTable.eq(6).text( "Item 7" );
updateWidgets(data)
}
});
})
(я изменил некоторые значения для конфиденциальности)
Я использую aoColumnDefs
, как вы можете видеть.Вот как я отображаю значок действия для удаления строк.Вот как я периодически обновляю данные:
function updateTables(){
jQuery.ajax({
url: '/api/?action=getStats',
type: 'GET',
dataType: 'json',
success: function (data) {
jQuery('#tablepress-1').DataTable().clear().rows.add(data.data.instances).draw();
jQuery('#tablepress-2').DataTable().clear().rows.add(data.data.trades).draw();
updateWidgets(data)
}
})
}
Я вызываю это по таймеру и везде, где это необходимо.Проблема в том, что мой столбец действий, заполненный aoColumnDefs
, нигде не определен.Поэтому, когда таблица обновляется, обновляются все мои строки, кроме этой.Как это сделать?