【发布时间】:2016-06-13 15:11:59
【问题描述】:
我知道如何使用 AngularJS 的 UI-GRID 进行客户端分页。但我想知道使用 AngularJS 的 UI-GRID 的服务器端分页。意味着单击下一页时,仅从服务器检索下一页的结果并显示给用户。我搜索了很多,但找不到任何合适的解决方案。
如果您能提供 Plunker 作为示例代码,那就太好了。
提前致谢。
【问题讨论】:
标签: angularjs asp.net-mvc pagination
我知道如何使用 AngularJS 的 UI-GRID 进行客户端分页。但我想知道使用 AngularJS 的 UI-GRID 的服务器端分页。意味着单击下一页时,仅从服务器检索下一页的结果并显示给用户。我搜索了很多,但找不到任何合适的解决方案。
如果您能提供 Plunker 作为示例代码,那就太好了。
提前致谢。
【问题讨论】:
标签: angularjs asp.net-mvc pagination
如果您使用的是实体框架,请在 OrderBy 的帮助下使用 Take and Skip 扩展方法
context.YourTable.OrderByDescending(sort).Skip(skipRows).Take(pageSize).ToList();
如果您使用 sql 查询,请在 order by 的帮助下使用 OFFSET and FETCH
SELECT * FROM YourTable order by SomeRow desc
OFFSET @skipRows -- skip 10 rows
FETCH NEXT @pageSize ROWS ONLY;
策略
将 skipRows 传递到服务器端。所以假设你在第 3 页上
skipRows = pageSize * (page -1)
因此,当您在第 3 页时,skipRows 值将变为 (10 * 2 = 20),因此从服务器端您将在跳过 20 rows 后获得下一个 10 rows。
编辑 1:如何设置 UI 网格
设置useExternalPagination为true并使用gridApi.pagination.on.paginationChanged跟踪页面变化并获取数据
你可以参考这个plnkr
【讨论】: