#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 ну, я рад, что это работает! Необходимость — мать изобретения, и я уже оказывался в точно такой же ситуации раньше 🙂