为啥我没有必要的 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 分页按钮?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 jQuery dataTables 不能解析我的 JSON?

为啥表体中没有数据?

jquery dataTable分页没有出现

为啥 jquery 数据表不响应点击?

为啥dataTable不显示空数据消息?

jquery.dataTable和jquery.DataTable初始化