У меня есть таблица, которой управляет плагин под названием Datatables. Некоторые строки идентичны, и я хочу скрыть его, кроме одного, и сделать сумму столбца (D), где мы находим числа. Посмотрите на мою фотографию, чтобы лучше понять.Как скрыть похожие данные в плагине datatables
ответ
Похоже, что это проект джанго. Я думаю, вы смешиваете презентацию и логику, что противоречит большинству джангоизмов. Это было бы намного чище и проще сделать это на питоне и передать уникальный набор в набор DOM вместо этой клиентской стороны и работать с API-интерфейсом datatables. Но если вы хотите действительно провалить jQuery, это возможно, но, вероятно, не будет очень чистым.
Возможно, вы можете совершить магию в инициализации столбца. Если это слишком много, вы можете перебрать стол, когда он обращается, а затем удалить Ряды
$('#table2excel').on('draw.dt', function(){
$(this).find('tr').each(function(e) {
//do row comparison
}
})
проблема здесь, это только называется на «рисовать», и если вы делаете подкачки, это может (если вы берете 2 из 10, это, вероятно, просто покажет вам 8), поэтому пейджинг будет странным.
Поскольку вы на самом деле не показывали никаких доказательств попытки, это все, что я могу вам дать, но должно быть достаточно, чтобы вы начали.
Я не использую paging - paging: false, я попробовал, и моя проблема в том, что я только что обнаружил js/jquery пару недель и datatables 4 дня назад, и я еще не закончил его изучать. Это проект Symfony. – toto
Вы можете добиться этого, используя группировку в 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
.
Извините, что ответ слишком поздно. Спасибо за ваше решение. Я хочу, чтобы не использовать группировку, я хочу скрыть повторяющиеся строки, как упоминалось ранее, плюс я группировка неверна. См. Здесь: http://img15.hostingpics.net/pics/504869tabE.png – toto
Вы не поняли решение. Вам нужна собственная пользовательская функция! Поместите свою логику в функцию обратного вызова draw. –
Обычно людям нравится видеть, что вы пытаетесь решить эту проблему и какие эти попытки. Если вы не будете пытаться решить проблему, многие люди тоже не будут беспокоиться. – rob