2016-11-02 3 views
0

У меня есть таблица, которой управляет плагин под названием Datatables. Некоторые строки идентичны, и я хочу скрыть его, кроме одного, и сделать сумму столбца (D), где мы находим числа. Посмотрите на мою фотографию, чтобы лучше понять.Как скрыть похожие данные в плагине datatables

+2

Обычно людям нравится видеть, что вы пытаетесь решить эту проблему и какие эти попытки. Если вы не будете пытаться решить проблему, многие люди тоже не будут беспокоиться. – rob

ответ

1

Похоже, что это проект джанго. Я думаю, вы смешиваете презентацию и логику, что противоречит большинству джангоизмов. Это было бы намного чище и проще сделать это на питоне и передать уникальный набор в набор DOM вместо этой клиентской стороны и работать с API-интерфейсом datatables. Но если вы хотите действительно провалить jQuery, это возможно, но, вероятно, не будет очень чистым.

Возможно, вы можете совершить магию в инициализации столбца. Если это слишком много, вы можете перебрать стол, когда он обращается, а затем удалить Ряды

$('#table2excel').on('draw.dt', function(){ 
    $(this).find('tr').each(function(e) { 
    //do row comparison 
    } 
}) 

проблема здесь, это только называется на «рисовать», и если вы делаете подкачки, это может (если вы берете 2 из 10, это, вероятно, просто покажет вам 8), поэтому пейджинг будет странным.

Поскольку вы на самом деле не показывали никаких доказательств попытки, это все, что я могу вам дать, но должно быть достаточно, чтобы вы начали.

+0

Я не использую paging - paging: false, я попробовал, и моя проблема в том, что я только что обнаружил js/jquery пару недель и datatables 4 дня назад, и я еще не закончил его изучать. Это проект Symfony. – toto

1

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

Взгляните на этот пример из row grouping - DataTables:

var table = $('#table2excel').DataTable({ 
    paging:false, 
    dom: 'Bfrtip', 
    buttons: [ 
     'copyHtml5', 
     'excelHtml5', 
     'csvHtml5', 
     'pdfHtml5' 
    ], 
    "drawCallback": function (settings) { 
     var api = this.api(); 
     var rows = api.rows({page:'current'}).nodes(); 
     var last=null; 

     api.column(2, {page:'current'}).data().each(function (group, i) { 
      if (last !== group) { 
       $(rows).eq(i).before(
        '<tr class="group"><td colspan="5">'+group+'</td></tr>' 
       ); 

       last = group; 
      } 
     }); 
    } 
}); 

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

+0

Извините, что ответ слишком поздно. Спасибо за ваше решение. Я хочу, чтобы не использовать группировку, я хочу скрыть повторяющиеся строки, как упоминалось ранее, плюс я группировка неверна. См. Здесь: http://img15.hostingpics.net/pics/504869tabE.png – toto

+0

Вы не поняли решение. Вам нужна собственная пользовательская функция! Поместите свою логику в функцию обратного вызова draw. –