2016-03-10 3 views
0

Я рабочий DataTable, который извлечения данных из файла:Datatable строки группировки

http://i.imgur.com/ehrbZFF.png

Я хочу группы подряд, что-то вроде этого:

https://datatables.net/examples/advanced_init/row_grouping.html

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

Вот код моего DataTable:

$(document).ready(function() { 
     $('#datatable').DataTable({ 
     "ajax": "<?php echo base_url()."assets/files/data/data.txt"; ?>" , 
     "columns": [ 
      { "data": "etat" }, 
      { "data": "dest" }, 
      { "data": "message" }, 
      { "data": "exp" }, 
      { "data": "date" } 
      ], 
      "order": [[ 0, "desc" ]], 
      "responsive": true 
      }); 
     }); 
+0

Что вы пытались сделать группировкой? Пример, который вы связали в своем сообщении, показывает, что вам нужно свойство 'drawCallback '', чтобы иметь возможность делать любую группировку. Я не вижу этого свойства в коде, который вы опубликовали. –

+0

Я пробовал это свойство, и по какой-то причине я не мог заставить его работать. В любом случае я сделал что-то не так – Komarzer

ответ

3

Вы должны использовать drawCallback функцию.

Попробуйте.

$(document).ready(function() { 
$('#datatable').DataTable({ 
"columns": [ 
     { "data": "etat" }, 
     { "data": "dest" }, 
     { "data": "message" }, 
     { "data": "exp" }, 
     { "data": "date" }, 
     { "data": "extra" } 
     ], 
     "order": [[ 4, "desc" ]], 
     "responsive": true, 
     drawCallback: function (settings) { 
      var api = this.api(); 
      var rows = api.rows({ page: 'current' }).nodes(); 
      var last = null; 

      api.column(4, { page: 'current' }).data().each(function (group, i) { 

       if (last !== group) { 

        $(rows).eq(i).before(
         '<tr class="group"><td colspan="8" style="BACKGROUND-COLOR:rgb(237, 208, 0);font-weight:700;color:#006232;">' + 'GRUPO ....' + group + '</td></tr>' 
        ); 

        last = group; 
       } 
      }); 
     } 

}); 

}); 

Результат: https://jsfiddle.net/cmedina/7kfmyw6x/13/

+0

Спасибо, работа! – Komarzer

0

Кажется, вы получите ошибку при выводе URL с помощью PHP в JavaScript.

Попробуйте вместо этого:

ajax: "<?php echo base_url() . 'assets/files/data/data.txt'; ?>" 

не одностраничную qoutes в PHP-коде.

Смежные вопросы