【发布时间】:2016-04-29 03:53:57
【问题描述】:
我们正在尝试使用 cassandra 来存储数据库。我们无法在 c# datastax 驱动程序中向后/向前翻页。谁能建议一种方法来在 MVC 项目中对结果进行分页。
【问题讨论】:
标签: asp.net asp.net-mvc cassandra paging
我们正在尝试使用 cassandra 来存储数据库。我们无法在 c# datastax 驱动程序中向后/向前翻页。谁能建议一种方法来在 MVC 项目中对结果进行分页。
【问题讨论】:
标签: asp.net asp.net-mvc cassandra paging
您可以使用 C# 驱动程序的 manual paging feature 对 Cassandra 的结果进行分页。基本上它是这样工作的:
SetAutoPage(false) 和 SetPageSize(pageSize)。RowSet 将具有PagingState 属性。将该分页状态保存在某处(例如,在会话存储或 Cookie 中)PagingState。SetAutoPage(false) 和SetPagingState(yourPagingStateFromStorage) 以获取下一页。棘手的部分是分页向后。如果您在 UI 中缓存分页的结果(即每次单击按钮转到下一个/上一个页面时不进行整页刷新),这不是问题,因为向后分页实际上只是在移动向后浏览您已经查询并缓存的数据(可能在您的 JavaScript 代码中的数组中)。
如果您在每次有人单击以翻阅结果时都进行整页刷新,那么您需要保留所有页面中的 PagingState,直到您确定它们已完成分页(即存储多个分页会话或 cookie 之类的状态值)。这样,如果有人向后翻页,您只需查找前一页的分页状态标记并在查询中使用它。
注意:如果您处于全页面刷新情况,您也可以将分页状态作为查询字符串参数传递。例如,创建指向下一页“/some/page?pagingState=PAGING_STATE_FROM_ROWSET_CURRENTLY_DISPLAYED”的链接,然后进行向后分页与浏览器的后退按钮执行相同的操作。
【讨论】: