【问题标题】:datatables serverside processing with unknown number of rows具有未知行数的数据表服务器端处理
【发布时间】:2016-02-09 09:26:10
【问题描述】:

数据表是否支持server-side 检索 rocordsTotal 计数事先未知的数据?

我们有数据,获取总计数的查询几乎与查询所有记录一样昂贵。如果有办法让数据表知道 recordsTotal 计数是未知的,那将是必要的。此类功能未记录在案。支持吗?

更新 1: 我想我没有完全解释我的问题并试图问一个抽象的版本。我正在使用 datatables.net/extensions/scroller 插件,它适用于 ajax 选项。如果我为 recordsTotal 使用大量数字,则用户可以滚动到按钮,我没有数据可以显示在那里。分页也是如此,用户可以点击可能不存在的页码。

【问题讨论】:

  • 您使用哪种数据库?它是什么样的表/视图,因为它需要很长时间才能获得总行数?
  • DataTable 的基本服务器端示例 - datatables.net/extensions/scroller/examples/initialisation/… - 似乎没有使用 TotalRecords。您有实际设置的 jsfiddle 吗?
  • jjbskir:基本的服务器端示例没有显示任何服务器端代码,这就是您在该示例中看不到任何内容的原因。他所指的“TotalRecords”可能是 Datatables 期望从服务器返回的对象中的“recordsTotal”字段。
  • 阿明,我已经更新了我的答案,以详细说明我提出的解决方案。我意识到我遗漏了一些关键细节,请重读。 :-)

标签: javascript jquery datatable


【解决方案1】:

我假设“TotalRecords”是指服务器返回到数据表的对象中的“recordsTotal”字段。您可以只计算满足搜索条件的下 N 个页面,将此值分配给“recordsFiltered”和“recordsTotal”,而不是通过“dom”选项呈现总记录数:http://datatables.net/reference/option/dom note i 组件。它不是内置功能,但对于事先不知道表数的情况,它是一种可行的解决方法。

这样做会让 Datatables 知道您至少还有 N 个页面要通过“recordsFiltered”字段查看,以便分页正常工作。这样,Datatables 不一定需要确切知道您有多少条记录才能工作。

您还可以使用 footerCallback 选项自定义表格下方的数据摘要。看这里:https://datatables.net/examples/advanced_init/footer_callback.html

另外,由于您在评论中提到您正在使用 postgresql,我不知道这是否与您相关(我从未使用过 postgresql)https://wiki.postgresql.org/wiki/Count_estimate

【讨论】:

  • 非常感谢,i 选项解决了我的一个问题。并且使用 footer_callback 非常有用。我没有在原始问题中完全解释我的问题,我试图问一个抽象版本。我正在使用datatables.net/extensions/scroller 插件,它适用于 ajax 选项。如果我为 recordsTotal 使用大量数字,则用户可以滚动到该按钮,我没有数据可显示在那里。分页也是如此,用户可以点击可能不存在的页码。
  • 如果您有其他选择的想法,我将不胜感激,否则我将再等两天,然后接受您的回答。谢谢:)
  • 不要使用任意大的数字。只计算您所在的页面和接下来的几页以确保它们存在,然后将 recordsTotal 和 recordsFiltered 都设置为该计数。这应该比对表格进行完整计数要快。
  • 阿明,我认为你没有正确理解我的回答。我的回答解决了您最新的担忧——您的问题第一次以抽象的形式就被理解了。
猜你喜欢
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
相关资源
最近更新 更多