Как отобразить другой цвет фона для статуса в jQuery Datatable?

#jquery #datatable

#jquery #datatable

Вопрос:

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

я хочу сделать так, пожалуйста, проверьте https://ibb.co/VDrk3vD

просмотр html

  <table id="datatable" class="table table-bordered table-striped" width="100%" cellspacing="0" cellpadding="0">
              <thead>
                <tr>
                  <th class="no-sort text-center" width="5%">S.No</th>
                   <th>Date </th>
                  <th>Member Name</th>
                  <th>End User</th>
                  <th>Status</th>

                  @if ($count > 0)
                  {{-- <th class="no-sort text-center" width="10%">Status</th> --}}
                  @endif
                </tr>
              </thead>
            </table>
  

скрипт jquery

 var table = $('#datatable').DataTable({
      processing: true,
      serverSide: true,
      ajax: '{{ route("connection.datatable") }}',
      "columns": [
        { "data": "id", "defaultContent": "" },  
        { "data": "created_at", "defaultContent": "" },
        { "data": "member_data.first_name", "defaultContent": "" },
        { "data": "user_data.first_name", "defaultContent": "" },
        { "data": "connect_status.name", "defaultContent": "" },

        @if ($count > 0)
        // { "data": "id", "defaultContent": "" },
        @endif
      ],
      "columnDefs": [{
        "targets": 'no-sort',
        "orderable": false,
      },
      {
        "targets": 0,
        "render": function (data, type, row, meta) {
          return meta.row   1;
        },
      },
      {
        "targets": 4,
        "render": function (data, type, row, meta) {

          var status = data;  

          return status
      
        },
      },
      ],
      //scrollX:true,
    });
  });
  

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

1. Можете ли вы предоставить минимальный рабочий пример вашего datatable — JSFiddle?

2. я хочу сделать так, пожалуйста, проверьте ibb.co/VDrk3vD

3. Загружаются ли ваши данные через ajax? Я полагаю, вы хотите изменить цвет статуса, как только он загрузится?

4. Загружаются ли ваши данные через ajax? — да, данные загружаются с помощью ajax — вы хотите изменить цвет статуса, как только он загрузится? — да, я хочу показать цвет bg для статуса, который я уже показал в примере.—-

Ответ №1:

Вы можете использовать некоторый пользовательский CSS стиль для статуса, чтобы раскрасить background свой статус в соответствии с status текстом.

В вашей columnDefs цели 4 для status и отобразите в status соответствии с его текстом (одобрено, отклонено или ожидание) и return status в span стиле CSS внутри td

 columnDefs: [{
  targets: 4,
  render: function(status, type, row, meta) {
    if (status == 'Pending') {
      status = '<td><span class="pending status">'   status   '</span></td>'
    } else if (status == 'Approved') {
      status = '<td><span class="approved status">'   status   '</span></td>'
    } else if (status == 'Reject') {
      status = '<td><span class="rejected status">'   status   '</span></td>'
    }
    return status;
  }
}]
  

Рабочая демонстрация: (запустите фрагмент ниже)

 $(document).ready(function() {

  //ajax data
  var data = [
    ["1", "12/09/2010", "Always", "Helping", 'Pending'],
    ["2", "21/09/2010", "Zubair", "Mukhtar", "Approved"],
    ["3", "08/09/2010", "Stack", "Overflow", "Pending"],
    ["4", "15/09/2010", "Corona", "Virus", "Reject"],
    ["5", "08/09/2010", "Foo", "Bar", "Approved"]
  ];

  //datatable
  var table = $('#datatable').DataTable({
    data: data,

    //you ajax request here

    //check status on columnDefs
    columnDefs: [{
      targets: 4,
      render: function(status, type, row, meta) {
        if (status == 'Pending') {
          status = '<td><span class="pending status">'   status   '</span></td>'
        } else if (status == 'Approved') {
          status = '<td><span class="approved status">'   status   '</span></td>'
        } else if (status == 'Reject') {
          status = '<td><span class="rejected status">'   status   '</span></td>'
        }
        return status;
      }
    }]
  });
});  
 .status {
  margin: 0 auto;
  padding: 5px;
  font-size: 14px;
  border-radius: 3px;
  text-transform: capitalize;
  width: 90px;
  display: block;
  text-align: center;
  color: #fff;
}

.pending {
  background-color: #ffad04;
  border-color: transparent;
}

.approved {
  background-color: #23d160;
  border-color: transparent;
}

.rejected {
  background-color: #dc3545;
  border-color: transparent;
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/r/dt/dt-1.10.9/datatables.min.js"></script>
<link href="https://cdn.datatables.net/r/dt/dt-1.10.9/datatables.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<table id="datatable" class="table table-bordered table-striped" width="100%" cellspacing="0" cellpadding="0">
  <thead>
    <tr>
      <th>S.No</th>
      <th>Date </th>
      <th>Member Name</th>
      <th>End User</th>
      <th>Status</th>
    </tr>
  </thead>
</table>