Изменить цвет фона столбца в зависимости от результата возврата Ajax - PullRequest
0 голосов
/ 01 октября 2019

Это второй раз, когда я опубликовал эту проблему. Я удалил первое сообщение, чтобы попытаться упростить его чтение.

Мне нужно изменить цвет фона столбца dataTables, основываясь на возврате ajax-возврата. если ajax возвращает [{"BoardName": "Главный прием", "Статус": 1}], я хотел бы, чтобы цвет фона столбца был зеленым, иначе будет красным.

MySQL

$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
$sql = "SELECT RecordID, RoomName  FROM ConfBookings2017 WHERE HotelID = '".$_SESSION['_amember_user']['hotelid']."' AND FullDb = 1";
$res = mysqli_query($conn, $sql) or die("Error: ".mysqli_error($conn));
$TotalRcount = $res->num_rows;
$data = array();
if($TotalRcount > 0) {  
  while($row = mysqli_fetch_array($res)){
    $BoardName = $row['RoomName'];
    $Rcount = 1; 
    $data[] = array(
            "BoardName" => $BoardName,
                    "Status"    => $Rcount);
 }
 echo json_encode($data);
} else {
    $BoardName = "No overrides active";
    $Rcount = 0;
    $data[] = array(
                    "BoardName" => $BoardName,
                    "Status"    => $Rcount);
 echo json_encode($data);   
}

Сценарий

$(document).ready(function(){
 var table = $('#WayFinderOverrideStatusTable').DataTable( {      
   ordering: false,
   paging: false,
   searching: false,
   bInfo : false,
   responsive: true,
   fixedHeader: true,
   scrollX: false,
   pageResize: true,
   ajax: {
      url: 'check_wayfinder_override.php', 
      dataSrc: ''
   },
    columns: [
      { data: 'BoardName',"sWidth": "100%" },
      { data: 'Status',"visible": false  },

    ],
    rowCallback: function( row, data, dataIndex ) {
    console.log("Log 1");
    if ( data[1] == 1 ) {    
    console.log("Log 2");    
      $(row).find('td:eq(0)').addClass('WayFinderOverrideStatusOn');
    } else {
    console.log("Log 3");
      $(row).find('td:eq(0)').addClass('WayFinderOverrideStatusOff');
    }
  },
}); 
  setInterval( function () {
    table.ajax.reload();
  }, 30000 ); 
});

CSS

.WayFinderOverrideStatusOn {
    color: #333;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 0.9em;
    padding-left: 5px;
    line-height: 24px;
    background-color: #FFD7D7;
    border-bottom-width: 0.5px;
    border-bottom-style: solid;
    border-bottom-color: #999;
}

.WayFinderOverrideStatusOff {
    color: #333;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 0.9em;
    padding-left: 5px;
    line-height: 24px;
    background-color: #E1FFE1;
    border-bottom-width: 0.5px;
    border-bottom-style: solid;
    border-bottom-color: #999;
}

После тестирования в отладчике браузера появляется сообщение «if (data [1] == 1){"если не собирать содержимое" data: 'Status' ". Может кто-нибудь увидеть, где я иду не так.

Большое спасибо заранее за вашу помощь и время.

1 Ответ

1 голос
/ 01 октября 2019

Попробуйте отладить объект data в консоли браузера. Если это не помогло, обновите ваш вопрос, указав содержимое вашего объекта данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...