【问题标题】: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 页),而我希望有两个。

【问题讨论】:

    标签: javascript jquery datatables pagination


    【解决方案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”之间的区别有点缺乏理解:在我的情况下,它们应该相等。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2011-08-04
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多