如何隐藏datatables插件上的类似数据

时间:2016-11-02 13:14:29

标签: javascript jquery symfony datatables twig

我有一个由名为Datatables的插件管理的表。有些行是相同的,我想隐藏它除了一个,并将列(D)的总和作为数字。看看我的图片以便更好地理解。

2 个答案:

答案 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创建自定义分组功能。

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;
            }
        } );
    }
} );

drawCallback是每次DataTables执行绘制时调用的函数 因此,您可以创建自己的自定义函数,迭代所有行,并查找相同的值,如果匹配,则组合您想要的值+删除两行并添加grouped行它们。