我想知道是否有任何标准方法可以保持实时列表的正确分页。例如,在 Stack Overflow 上,如果我转到第 2 页,并且在查看第 1 页期间提交了一个新问题,我如何才能使第 2 页保持与我开始查看第 1 页时的状态相同?
很多时候人们只会使用 LIMIT 进行 SQL 查询,但这不会让您跟踪第 1 页的结束位置和第 2 页的开始位置。
我想这可以通过跟踪最后一次看到的记录的 ID 或其他东西来完成。
我想知道是否有任何标准方法可以保持实时列表的正确分页。例如,在 Stack Overflow 上,如果我转到第 2 页,并且在查看第 1 页期间提交了一个新问题,我如何才能使第 2 页保持与我开始查看第 1 页时的状态相同?
很多时候人们只会使用 LIMIT 进行 SQL 查询,但这不会让您跟踪第 1 页的结束位置和第 2 页的开始位置。
我想这可以通过跟踪最后一次看到的记录的 ID 或其他东西来完成。
我认为大多数用户已经习惯了这种行为并期望它发生。当他们转到下一页并看到他们刚刚在页面末尾的项目是当前页面的第一项时,他们可能会意识到这是因为添加了新项目。我知道我以前作为用户依赖于这种行为来了解在浏览页面时何时添加了新内容。
所以我的意见是你不应该这样做。
我们对所有分页 Web UI 执行此(您请求的)行为。(我实际上已经在 SO 中提出了要求,但它拒绝了 - 但我发现当前的重新分页令人讨厌且出乎意料 - 我讨厌点击“下一个”并将前 n 项作为上一页中的最后一项)。
诀窍是保留(通常在隐藏变量中)足够的关键信息,以便将列表定位在您正在查看的页面的第 1 项之前和最后一项之后。然后您的上一页和下一页链接在提交时提供该信息。实际上,您保留了“上一页”和“下一页”键。这直观地适用于插入和删除。
要记住的一件事是,第 1 页上的刷新(假设像 SO 是最新项目的第一个列表)应该(a)激活“上一个”链接,如果它被隐藏,或者(b)从顶部刷新列表,包括添加的项目。换句话说,“刷新”总是从第一个项目重新显示页面,但如果页面上的第一个项目也是列表中的第一个项目并且现在有新项目,它会从列表的开头重新显示。对于我们的列表,我们通常有“第一页”、“上一页”、“刷新”、“下一页”和“最后一页”的标准链接。
查看新项目的替代方法是始终拥有上一个链接,它会备份整个页面中较小的一个或列表的顶部 - 这就是用户查看新项目的方式(但我更喜欢隐藏/禁用上一个/下一个当没有上一个和/或下一个项目时)。