【问题标题】:DataTables Pager Showing One Page when there Are ManyDataTables寻呼机在有很多时显示一页
【发布时间】:2020-03-17 04:45:08
【问题描述】:

我有一个问题,最初是在this question 中提出的。我认为它有效,但不是这样。

我正在使用带有 jQ​​uery 3.3.1 和 Bootstrap 3.3.7 的数据表 v1.10.19

现在,我的问题是,无论我有多少页数据,寻呼机都显示一个分页按钮(好像所有数据都适合一页,但实际上不适合)。

我的配置对象如下所示:

        {
            "processing": true,
            "serverSide": true,
            "ajax": {
                url: url,
                type: ajax.requestPOST
            },
            "order": [[1, "asc"]],
            "lengthMenu": [[-1, 500, 1000, 2500, 5000], ["All", 500, 1000, 2500, 5000]],
            "columns": eventsSvr.grid.columns,
            "columnDefs": eventsSvr.grid.columnDefs,
            "language": $.extend({}, appDt.loadingSpinner, appDt.lengthMenuText),
            dom: 'ltp'
        }

我的返回载荷如下所示:

{
    "draw": 4,
    "recordsTotal": 3727,
    "recordsFiltered": 500,
    "data": [ big data array here ]
}

可以看出,数据有 3700 多行。
页面大小为 500。
然而,网格只有 1 页。它有 500 行,并且寻呼机上没有用于移动到任何后续页面的按钮。

因此,用户只能查看前 500 条记录。

关于寻呼机发生了什么的任何想法?

【问题讨论】:

  • 我想我可能已经想通了。 recordsFilteredrecordsTotal 应该相同,即记录总数。我将recordsFiltered 设置为页面大小。有 2 个重复值的变量似乎有点奇怪。这就是为什么我不确定这是不是正确的方法。

标签: datatables datatables-1.10


【解决方案1】:

DataTables 根据recordsFiltered 和您的页面大小计算页面数。它包含应用过滤后的记录总数。

执行搜索时,recordsFiltered 可能不等于recordsTotal

您的服务器端处理程序应在不应用搜索条件的情况下计算总记录数并将其返回到recordsTotal,然后在应用搜索条件后计算总记录数并将其返回到recordsFiltered

这允许 DataTables 在信息部分显示以下消息:

显示 1 到 10 个 recordsFiltered 条目(从recordsTotal 总条目过滤)

您可以在official documentation阅读更多关于服务器端处理模式下返回数据的正确格式。

【讨论】:

  • 是的,我最初有你说的代码。但这导致了我的测试人员报告的错误,我在这里询问过。服务器端分页就像打地鼠 :) 你做一件事,它会破坏另一件事。希望当前的代码可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
相关资源
最近更新 更多