为啥我没有必要的 jQuery DataTables 分页按钮?
Posted
技术标签:
【中文标题】为啥我没有必要的 jQuery DataTables 分页按钮?【英文标题】:Why do I have not necessary pagination buttons with jQuery DataTables?为什么我没有必要的 jQuery DataTables 分页按钮? 【发布时间】:2021-04-16 15:15:20 【问题描述】:我在使用服务器端请求分页的 DataTables 上遇到问题。
看起来分页按钮的数量与我的结果无关。 无论我有多少结果,我总是有第 1、2、3、4、5 页的按钮。
我的数据表定义:
$('#tableau_reponses').DataTable(
"ajax":
url: '/my_api/get_reponses_ajax',
type: 'post',
data: formData
,
"paging": true,
"searching": false,
"bProcessing": true,
"serverSide": true,
"ordering": false,
"info": false,
"pagingType": "numbers",
"pageLength": 20,
"lengthMenu": [10, 20, 50, 100],
'order': [[1, 'asc']],
'columnDefs': [
'targets': 0,
'orderable': false,
'className': 'dt-body-center',
'render': function (data, type, full, meta)
return '<input type="checkbox" name="id[]" value="' + $('<div/>').text(data).html() + '">';
,
'targets': 1,
'render': function (data)
return '<td class="response_state_folder"></td>';
],
);
在我的测试环境中,我知道我有 29 个结果。我的 pageLength 设置为 20。 所以默认情况下,在第 1 页,我有 20 个结果。当我选择第 2 页时,我有 9 个结果。到目前为止,一切都很好。 但是当我选择第 3、4 或 5 页时(我不应该这样做),我得到 0 个结果。
当我有 29 个结果时,我应该只有 2 个页面,为什么我有“3、4、5”按钮? 当然,如果我有 142 个结果,我需要 8 页...
我想我在这里遗漏了一些非常明显的东西......
感谢您的帮助!
===== 编辑 =====
在@Ashu's answer 之后,我设法在我的回复中获得了“recordsFiltered”和“recordsTotal”(在我的示例中分别为“20”和“29”)。但现在,我只有一个按钮(用于第 1 页),而我希望有两个。
【问题讨论】:
【参考方案1】:您的服务器响应必须返回来自数据库的过滤响应中有多少 rows
,以及总共有多少行,以便数据库可以正确设置分页值。
示例响应:
"draw": 1,
"recordsTotal": 57, // these both are important and must be updated in every response
"recordsFiltered": 20, //
"data": [
[
"Angelica",
"Ramos",
"System Architect",
"London",
"9th Oct 09",
"$2,875"
],
]
如果您需要有关服务器端代码的帮助,您可以编辑或提出新问题。
更多在文档here
【讨论】:
谢谢,帮了很多忙,我在 recordsTotal 和 recordsFiltered 中得到的值(在我之前的尝试中丢失)是正确的,但现在我遇到了相反的问题,没有足够的按钮(请参阅我的编辑) . 确保您有正确的值通过,如果查询中添加了过滤器,请确保总计数也被过滤,如果您仍然有问题,请编辑或提出更多新问题详情 好的,它有效,我的错,我对“recordsFiltered”和“recordsTotal”之间的区别有点缺乏理解:在我的情况下,它们应该相等。再次感谢您的帮助!以上是关于为啥我没有必要的 jQuery DataTables 分页按钮?的主要内容,如果未能解决你的问题,请参考以下文章