Я пытаюсь сделать свою функцию DataTables общей, чтобы она работала для любой таблицы на моем веб-сайте.
Я хочу покрасить фон моих строк в зависимости от столбца «status», который будет присутствоватьво всех моих таблицах.Единственный способ, которым я могу окрашивать строки в данный момент, - это доступ к массиву данных по индексу.Мне нужен способ доступа к столбцу по имени, а не по индексу массива.
Приведенный ниже код работает, добавляя либо класс «зеленый», либо «красный» в зависимости от значения в aData[6]
, но есть ли способВместо этого я могу искать значение в aData['status']
?
php в 'https://www.example.com/table-data' возвращает массив:
return array('data' => array(...., ..., ....));
jQuery для инициализации DataTables:
$('.ajax-data-table').each(function(index) {
var table = this.id;
// Create ajax table with datatables
$(this).dataTable({
processing: true,
ajax: {
url: 'https://www.example.com/table-data',
data: function (d) {
d.table = table;
}
},
deferRender: true,
responsive: true,
columnDefs: [
{targets: ['no-sort'], bSortable: false},
{targets: ['no-visible'], className: 'never'}
],
fnRowCallback: function(nRow, aData, iDisplayIndex) {
if (aData[6] == "W") $(nRow).addClass('working');
else if (aData[6] == "C") $(nRow).addClass('closed');
return nRow;
}
});
});
Другая возможность может состоять в том, чтобы передать некоторые дополнительные данные обратно с сервера, чтобы я мог сообщить функции fnRowCallback, в каком столбце искать статус.
Если я передам обратно массив с сервера, например return array('data' => array(...., ..., ....), 'extra' => 6);
как мне получить доступ к «дополнительным» данным в fnRowCallback?
Update
Мне удалось подтвердить, что я могу передать дополнительные данные с сервера, как показано выше, что я вижу при работе с fnInitComplete:
fnInitComplete: function(oSettings, json) {
console.log(json.extra);
}
Можно ли получить доступ к данным json.extra в fnRowCallback
?Если есть способ, я могу использовать aData[json.extra]
?