我有两个使用DataTable jQuery插件的表。 我想知道是否有办法隐藏我桌子右下方的分页。
答案 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/