Изменение цвета произвольных ячеек в таблицах данных

#javascript #datatables

#javascript #таблицы данных

Вопрос:

У меня есть таблица DataTables. Вот упрощенная версия того, что я имею в результате:

 $('#dt_list').html( '<table cellpadding="0" cellspacing="0" border="1" class="content" id="test"></table>' );

$('#test').dataTable( {
    "bAutoWidth": true
    "aaData": [ 'val1', 'val2', 'val3' ],
    "aoColumns": [ 'col1', 'col2', 'col3' ],

});

...stuff here..

<div id='dt_list'></div>
  

Массивы JavaScript генерируются скриптом Python на основе значений, извлеченных из базы данных MySQL (иначе это было бы неуместно, но я просто хочу убедиться, что люди, читающие это, знают, что я динамически генерирую массивы содержимого вне JavaScript).

Как я уже говорил, данные, отображаемые в этой таблице, являются результатом запроса MySQL, который затем обрабатывается Python и выводится в JavaScript на странице, сгенерированной Python.

В моем коде на Python есть логика, позволяющая определить не только, какое значение помещается в ячейку, но и требует ли ячейка какого-либо выделения (с помощью цвета фона ячейки). Мой вопрос здесь в том, как я могу произвольно изменить цвет определенных ячеек с данными?

Поскольку большая часть моей логики написана на Python, мне на самом деле не нужно ничего особенного или элегантных оценок в JavaScript, мне просто нужен какой-то способ в JavaScript манипулировать CSS-свойством ячейки или каким-то другим способом указывать другой цвет.

Я заглянул в fnRender, и, похоже, это моя лучшая надежда. Однако на данный момент у меня две проблемы: (а) я не могу найти способ манипулировать цветом из функции fnRender (похоже, она больше предназначена для манипулирования самим содержимым) и (б) я не уверен, как я смогу заставить fnRender узнать результат операции Python, чтобы определить, нужна ли специальная раскраска.

Я чего-то не понимаю? Или, может быть, мне просто нужно переосмыслить, как я к этому подхожу? В идеале я хотел бы найти решение этой проблемы, которое не требует переделки способа, которым я это делаю, но я изменю способ генерации данных или передачи их, если потребуется. Я модифицирую некоторый существующий код и предпочел бы не портить существующий дизайн, а выбрать кратчайший и простой путь для преобразования выходных данных списка таблиц в таблицы данных, и частью этого является создание определенных ячеек с измененным цветом.

Ответ №1:

Ваш обратный вызов «fnRender» может возвращать содержимое ячейки, заключенное в маркер <span> или <div> (или что угодно еще). Затем вы можете использовать fnDrawCallback функцию, чтобы найти их и пометить родительский <td> элемент классом.

Комментарии:

1. Спасибо за отличный ответ! Вы дали мне все, что мне нужно, в отношении fnDrawCallback, а также использования div для получения родительского

2. @Mark ну, я рад, что это работает! Необходимость — мать изобретения, и я уже оказывался в точно такой же ситуации раньше 🙂