如何仅过滤当前页面中的数据

问题描述

我正在使用 config.module .rule('resolveNodeModules') .test(/\.m?jsx?$/) .include.add(/node_modules\/(vue2-editor|quill|quill-delta)\/.*/) .end() .use('babel-loader') .loader('babel-loader') 。我在一次调用中检索所有数据,假设我在第 3 页,同时过滤数据,它从整个数据中搜索数据,并自动转到“第 1 页”,我需要一种方法来过滤当前页面中的数据仅和不要分页到第 1 页,它应该只在当前页面上。有没有办法做同样的事情?提前致谢!!!

编辑:我在服务器端分页中也面临同样的问题。

解决方法

igx-grid中任意一列的数据进行过滤并不是只对特定页面数据起作用,而是对整个数据集起作用。如果只需要过滤当前页面内的数据,那么当前页面内的数据会小于页面大小,并且网格中的数据状态一般会不同步。

为了通过服务器端分页获取当前页面上的当前过滤数据,您可以从网格中提取 filteringExpressions 并将它们在分页请求中发送到您的后端服务。然后首先过滤数据并随后对其进行分页并仅返回页面大小。在伪代码中,这将类似于:

data.Where(d => d.something meets condition).Skip(page).Take(pageSize)

结果应该是这样的: https://stackblitz.com/edit/github-w6x6a7?file=src/app/grid/grid-remote-paging-defaultTemplate-sample/remote-paging-default-template.component.html

现在执行客户端过滤时网格确实会重置页面,因为过滤数据时,页面数量减少,用户所在的当前页面可能不再存在。

可以在此处找到 igx-grid 中服务器端分页和过滤的示例: https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/remote-data-operations