【问题标题】:Improve table paging logic改进表分页逻辑
【发布时间】:2024-05-18 05:15:01
【问题描述】:

我有一个 GridView,其中包含最近的 100 条文档记录(标题、描述、作者、创建日期)。 我使用 DataTable jQuery 插件来提供更多功能,例如:列拖放、搜索、分页。

由于文档的总数可能非常高(数以千计的记录),我决定将提供的数据限制为仅 100 个条目。这将满足几乎 90% 的情况。
但是,一些用户可能还需要搜索/查看旧文档。因此,我需要进一步实现允许加载“更多”100 条记录的逻辑。

我的流程如下:
1) 加载前 100 个条目。
2) 提供额外的按钮 -> 单击后将进一步的 100 个条目推入表中(因此有 200 条记录)。

由于我真的不喜欢插入一个额外的按钮来“推送”新数据,如何以更好的方式实现这一点?

【问题讨论】:

  • 你为什么不想要一个按钮呢?这基本上是所有搜索引擎的标准('转到下一页'或其他东西......)。或者,如果用户只是在您的页面上向下滚动,您是否正在考虑加载更多结果?
  • jQuery 插件已经提供了 2 个按钮来导航到下一页/上一页。每页将有 20 到 50 条记录,然后其他记录将显示在下一页中(无需向下滚动,然后在显示最后一条时,自动加载下 100 条)。从设计/布局的角度来看,按钮的想法在我看来并不出色。但是标记为“加载旧数据”的按钮即使在当前布局中也可能有意义。

标签: jquery data-binding paging datatables


【解决方案1】:

您可以使用数据表的“bScrollInfinite: true”选项。您还需要指定 sScrollY 选项来表示数据表的高度。

设置这些选项后,您的用户只需向下滚动,当数据表检测到他们接近页面底部时,它会自动为您加载更多数据到底部。

"bScrollInfinite": true,
"sScrollY": 350,

【讨论】:

  • 感谢您的点击。这种方法可能很好,我只是害怕如果我在表中加载 1000 多条记录,即使使用 bScrollInfinite,加载该页面也需要一段时间。对于我所看到的,没有对服务器的 Ajax 调用来根据需要检索行,但是所有数据集都必须已经可用并且仅在需要时才显示。因此,这只会提供一种不同的数据分页方式。
  • Jquery 数据表有一个选项来实际进行服务器端处理。详情见此链接datatables.net/examples/data_sources/server_side.html