DataTable:如何隐藏分页并仅显示需要?

时间:2015-02-18 21:02:46

标签: javascript jquery datatables jquery-datatables

我有两个使用DataTable jQuery插件的表。 我想知道是否有办法隐藏我桌子右下方的分页。

enter image description here

注意:

  • 只在需要时才显示分页。
  • 查询结果小于10时隐藏分页。

6 个答案:

答案 0 :(得分:47)

使用drawCallback选项处理DT draw事件并根据可用页面显示/隐藏分页控件:

$('#table_id').dataTable({
  drawCallback: function(settings) {
    var pagination = $(this).closest('.dataTables_wrapper').find('.dataTables_paginate');
    pagination.toggle(this.api().page.info().pages > 1);
  }
})

答案 1 :(得分:3)

  $('#dataTable_ListeUser').DataTable( {

        //usual pager parameters//

        "drawCallback": function ( settings ) {

        /*show pager if only necessary
        console.log(this.fnSettings());*/
        if (Math.ceil((this.fnSettings().fnRecordsDisplay()) / this.fnSettings()._iDisplayLength) > 1) {
            $('#dataTable_ListeUser_paginate').css("display", "block");     
        } else {                
            $('#dataTable_ListeUser_paginate').css("display", "none");
        }

        }
       });

答案 2 :(得分:2)

$(this)对我不起作用,可能是因为我使用的是TypeScript。所以我使用了一种不同的方法来获取表包装器和DataTables API的JQuery元素。这得到了BitOfUniverse答案的启发,并使用DataTables 1.10进行了测试。

打字稿:

'drawCallback': (settings: any) => {
      // hide pager and info if the table has NO results
      const api = new $.fn.dataTable.Api(settings);
      const pageCount = api.page.info().pages;

      const wrapper = $('#' + settings.sTableId).closest('.dataTables_wrapper');
      const pagination = wrapper.find('.dataTables_paginate');
      const info = wrapper.find('.dataTables_info');

      pagination.toggle(pageCount > 0);
      info.toggle(pageCount > 0);
 }

答案 3 :(得分:2)

您可以使用 fnDrawCallback()方法隐藏 dataTable 中的分页

var oTable = $('#datatable_sample').dataTable({
    "iDisplayLength": 10,    
    "fnDrawCallback": function(oSettings) {
        if ($('#datatable_sample tr').length < 10) {
            $('.dataTables_paginate').hide();
        }
    }
});​

length ,您可以根据要在列表中显示的行来定义。

答案 4 :(得分:1)

使用'drawCallback'来解决这个问题。

1.在网页上,使用开发人员工具检查“上一个”按钮,然后您将找到一个包含“上一个”和“下一个”按钮的div元素。 DataTables根据您的html表元素的id自动为此div分配一个id。

例如,我有一个id为'Atable'的表。在此表中,DataTables自动创建一个id为'Atable_paginate'的div元素来包装上一个和下一个按钮。

2.对于drawCallback,我们编写一个检查是否少于1页的函数,如果是,我们使用id隐藏元素。

例如,您已通过

设置了一页上有20条记录
drawCallback: function(settings){
    if($(this).find('tbody tr').length <= 20){
        $('#Atable_paginate').hide();
    }
}

表示如果记录少于20条,我们不需要显示“上一页”和“下一页”按钮。所以我们写如下,

var table = $('#Atable').DataTable({
    pageLength: 20,
    lengthChange: false,
    drawCallback: function(settings){   
        if($(this).find('tbody tr').length <= 20){
            $('#Atable_paginate').hide();
        }
    }
});

3.Atable的初始化应如下所示

SELECT player_plays_in.player_id, SUM( player_plays_in.points_scored) AS 
    TotalPoints
FROM player_plays_in 
GROUP BY player_plays_in.player_id 
HAVING TotalPoints = ( SELECT MAX( points ) 
                       FROM ( SELECT SUM( player_plays_in.points_scored) AS 
                                     points
                              FROM player_plays_in
                              WHERE player_plays_in.points_scored > 0
                              GROUP BY player_plays_in.player_id
                            )
                      );

4.如果网页上有多个表格,请在每个表格上应用此方法。

答案 5 :(得分:-1)

您可以在Javascript

中创建数据表时提供选项

$('.examples').DataTable({ "paging": false });

此处列出了所有选项: http://www.datatables.net/reference/option/