我有一个由名为Datatables的插件管理的表。有些行是相同的,我想隐藏它除了一个,并将列(D)的总和作为数字。看看我的图片以便更好地理解。
答案 0 :(得分:1)
看起来这是一个django项目。我认为你正在混淆演示和逻辑,这违背了大多数的djangoisms。在python中执行此操作会更加清晰,更简单,并将唯一集传递给DOM集,而不是执行此客户端并处理datatables API。但是如果你真的想要通过jquery,它是可能的,但可能不会很干净。
你可以在列初始化中做一些魔术。如果这太多了,你可以在绘制时循环遍历表格,然后删除行
$('#table2excel').on('draw.dt', function(){
$(this).find('tr').each(function(e) {
//do row comparison
}
})
这里存在的问题是,这只是在“抽奖”中调用的。如果你正在进行寻呼,它可能会寻找奇怪的数字(如果你取10个中的2个,它可能只会显示8个),所以分页会很奇怪。
既然你还没有真正展示任何尝试的证据,那就是我真正能给你的全部,但应该足以让你开始。
答案 1 :(得分:1)
您可以使用DataTables中的分组来实现它 DataTables没有实际的官方分组功能,但可以使用drawCallback创建自定义分组功能。
查看此示例 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;
}
} );
}
} );
drawCallback是每次DataTables执行绘制时调用的函数
因此,您可以创建自己的自定义函数,迭代所有行,并查找相同的值,如果匹配,则组合您想要的值+删除两行并添加grouped
行它们。