Определение столбца jQuery DataTables для нескольких полей данных - PullRequest
1 голос
/ 30 мая 2019

Я использую jQuery DataTables с обработкой на стороне сервера для моего списка.Но у меня есть проблема: я хочу отобразить более одного столбца данных из базы данных в одном столбце (заголовок).Итак, как я могу определить свой столбец?

<?php
$columns = array(
    array( 'db' => 'ass_id', 'dt' => 0 ),
    array( 'db' => 'ass_customer_id',  'dt' => 1 ),
    array( 'db' => 'ass_customer_id',   'dt' => 2 ),
    array( 'db' => 'ass_id', 'dt' => 3 ),
    array( 'db' => 'ass_id', 'dt' => 4 ),
    array( 'db' => 'ass_id', 'dt' => 5 ),
    array( 'db' => 'ass_id', 'dt' => 6 ),
    array( 'db' => 'ass_id', 'dt' => 7 ),
    array( 'db' => 'ass_rec_letter_sent', 'dt' => 8 )
);
?>

В приведенном выше коде я определил 8-й столбец как ass_rec_letter_sent, но в этом же столбце у меня есть еще 2 поля данных для отображения, поэтому я могу 'не понимаю, как я могу это сделать.

1 Ответ

1 голос
/ 30 мая 2019

Для этой цели вы можете использовать опцию columns.render.Он принимает данные вашей ячейки, тип данных ячейки, источник данных всей строки и номер строки / номер столбца в качестве аргументов.

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

Например, если исходные данные для каждой строки вашей таблицы являются объектами, например:

{id: 'someid', name: 'somename', phone: 'somephone', mail: 'somemail'}

И вы хотели быобъедините phone и mail в объединенный столбец contacts, вы можете просто сделать:

$('#example').DataTable({
  ...
  columns: [
    {title: 'contacts', data: null, render: (data, type, row, meta) => `phone: ${row.phone}, e-mail: ${row.mail}`}
  ]
});

Завершить демонстрацию этой концепции, которую вы можете найти ниже:

//data sample that mimic response from your back-end PHP script
const srcData = [
  {id: 1, name: 'Steve Rogers', phone: '+1987270123512', mail: 'cap@avengers.org'},
  {id: 2, name: 'Tony Stark', phone: '+1987987235143', mail: 'ironman@avengers.org'},
  {id: 3, name: 'Peter Parker', phone: '+1698701245121', mail: 'spidey@avengers.org'}
];

//datatables initialization
const dataTable = $('#example').DataTable({
  dom: 't',
  data: srcData,
  columns: [
    {title: 'id', data: 'id'},
    {title: 'name', data: 'name'},
    {title: 'contacts', data: null, render: (data, type, row, meta) => `phone: ${row.phone}, e-mail: ${row.mail}`}
  ]
});
<!doctype html>
<html>
<head>
  <script type="application/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script type="application/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>

  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
</head>
<body>
  <table id="example"></table>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...