cassandra c# 驱动程序中的向后分页[关闭]

问题描述 投票:0回答:1

我们正在尝试使用cassandra来存储数据库。我们无法在 c# datastax 驱动程序中向后/向前分页。谁能建议一种在 MVC 项目中对结果进行分页的方法。

asp.net asp.net-mvc cassandra pagination
1个回答
5
投票

您可以使用 C# 驱动程序的“手动分页功能”来分页来自 Cassandra 的结果。基本上它的工作原理是这样的:

在查询第一页之前,请在要获取第一页的对账单上拨打
    SetAutoPage(false)
  1. SetPageSize(pageSize)
    选择 Cassandra 结果的第一页。从查询返回的 
  2. RowSet
  3. 将具有
    PagingState
    属性。将分页状态保存在某处(例如,在会话存储或 Cookie 中)
    稍后,当您想要获取下一页时,请从存储位置检索 
  4. PagingState
  5. 查询下一页前,请在对账单上拨打
  6. SetAutoPage(false)
  7. SetPagingState(yourPagingStateFromStorage)
    即可获取下一页。
    对后续页面重复步骤 2-4。
  8. 棘手的部分是
向后

分页。如果您在 UI 中缓存分页结果(即,每次单击按钮转到下一页/上一页时,不执行全页刷新),这不是问题,因为向后分页实际上只是移动向后浏览您已经查询并缓存的数据(可能在 JavaScript 代码的数组中)。 如果您每次有人点击翻页结果时都进行整页刷新,那么您需要在所有页面上保留

PagingState

,直到您确定它们已完成分页(即存储多个分页状态值)例如 Session 或 cookie)。这样,如果有人向后分页,您只需查找上一页的分页状态令牌并在查询中使用它即可。


注意:如果您处于全页面刷新情况,您还可以将分页状态作为查询字符串参数传递。例如,链接到下一页“/some/page?pagingState=PAGING_STATE_FROM_ROWSET_CURRENTLY_DISPLAYED”,然后向后分页只需执行与浏览器后退按钮相同的操作。

© www.soinside.com 2019 - 2024. All rights reserved.