【问题标题】:jQuery Datatables - Disable pagination and search if no results?jQuery Datatables - 如果没有结果,禁用分页和搜索?
【发布时间】:2019-10-22 11:12:28
【问题描述】:

我的 AJAX 调用获取的 JSON 数据有时可能为空。如果我将 paginate 选项设置为 true,即使我有 0 个结果,也会显示搜索和分页组件。在这种情况下,我将数据设置为一个空对象[{}]。我的设置如下:

processing: true,
serverSide: true,
autoWidth: false,
ordering: false,
searching:true,
lengthChange:false,
info: false

JSON如下:

draw: 1
length: 10
recordsFiltered: 10
recordsTotal: 1
start: 0
data: [..... list of items]

如果我没有数据,如何禁用这两个组件?

更新:我不想在渲染后更改设置,我根本无法理解为什么如果结果为 0,Datatable 会显示分页,有没有办法避免它。目前我已经使用xhr事件隐藏它来检查数据的长度。

【问题讨论】:

  • @SinanSamet 是的,我已经看到了这个答案,请阅读我的更新。我不想更改设置!
  • 啊,好吧,考虑到这一点,这似乎对您来说是最好的解决方案:stackoverflow.com/a/38853805/1421775。那有帮助吗?
  • 完美,这似乎比我正在做的更整洁。我检查xhr 事件中的数据长度,并使用jQuery 隐藏分页和搜索DOM 元素。您可以将其添加为答案,我会接受。但是我想知道像这样的图书馆如何不能自己处理这个问题。
  • 是的,它已经存在很长时间了,我也希望如此。

标签: jquery datatable pagination


【解决方案1】:

根据this 的回答,您必须使用 drawCallback 选项来找出存在多少页。然后,您可以在页数等于 1 时隐藏分页。

BitOfUniverse:

使用 drawCallback 选项来处理 DT 绘制事件和显示/隐藏 基于可用页面的分页控制:

$('#table_id').dataTable({
  drawCallback: function(settings) {
    var pagination = $(this).closest('.dataTables_wrapper').find('.dataTables_paginate');
    pagination.toggle(this.api().page.info().pages > 1);
  }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2021-03-24
    • 2014-03-26
    • 2017-02-24
    • 2018-02-17
    相关资源
    最近更新 更多