【问题标题】:Server side pagination in UI-GRID of angualrjsangularjs的UI-GRID中的服务器端分页
【发布时间】:2016-06-13 15:11:59
【问题描述】:

我知道如何使用 AngularJS 的 UI-GRID 进行客户端分页。但我想知道使用 AngularJS 的 UI-GRID 的服务器端分页。意味着单击下一页时,仅从服务器检索下一页的结果并显示给用户。我搜索了很多,但找不到任何合适的解决方案。

如果您能提供 Plunker 作为示例代码,那就太好了。

提前致谢。

【问题讨论】:

    标签: angularjs asp.net-mvc pagination


    【解决方案1】:

    如果您使用的是实体框架,请在 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;
    

    策略

    1. 将 PageSize 作为 pageSize(比如 10)传递给服务器端函数或 API
    2. 将 skipRows 传递到服务器端。所以假设你在第 3 页上

      skipRows = pageSize * (page -1)

    因此,当您在第 3 页时,skipRows 值将变为 (10 * 2 = 20),因此从服务器端您将在跳过 20 rows 后获得下一个 10 rows。

    编辑 1:如何设置 UI 网格

    设置useExternalPagination为true并使用gridApi.pagination.on.paginationChanged跟踪页面变化并获取数据

    你可以参考这个plnkr

    【讨论】:

    • 感谢您提供的信息。我知道如何在实体框架中做。我的问题是如何在 UI-Grid 中做到这一点。如何在 UI-GRID 中针对页面调用它。如果您或任何人都可以提供 Plunker,那就太好了。
    • Ashish,您提供的 plunker 从服务器检索所有数据,然后在客户端进行切片。我实际上想要一个场景,其中只有选定的数据从服务器检索到 UI-GRID。
    • @user6389905 然后不要进行切片。只需获取相应的数据并将其传递给 $scope.gridOptions.data
    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 2020-03-13
    • 2018-04-30
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多