如何在 ExtJS 5 中使用分页过滤网格数据

How to filter grid data with paging in ExtJS 5

我正在尝试将过滤器应用于具有活动分页的数据存储。 我目前正在使用静态数据存储而不是使用代理。 但是,筛选器应用于数据网格中显示的当前页面而不是整个数据存储。

案例 1:我尝试停用分页,应用过滤器,然后再次激活分页。但是,过滤器对当前页面有效,而不是对整个数据存储有效。

案例 2: 我尝试在应用 案例 1 之前将排序器添加到数据存储。它也没有用。

有什么方法可以过滤所有数据并分页显示过滤结果吗?

注意:我试图在 Sencha Fiddle 上编写类似的代码,但网格没有在此 fiddle、there is sample code

上分页
  1. 静态存储数据不支持分页,因为分页是由代理和reader完成的。但是,您可以使用 enablePaging:true.

  2. pagingmemory 代理(ExtJS 4)或 memory 代理(ExtjS 5/6)上定义数据
  3. 对于 ajax 代理,分页是通过向服务器发送页面大小和开始 属性 来完成的。如果服务器忽略这些属性并返回它在数据库中的所有内容,则分页将无法用于 ajax 代理。服务器可能只发回应该在网格中可见的记录。

  4. 请注意,ajax 代理还必须传送 totalCount 才能使寻呼工作。要查看 pagingToolbar 的工作情况,请添加到您的商店:totalCount:25。瞧,您的 pagingToolbar 显示有五个页面。其他一切还不能正常工作,因为请参阅 1。再次删除 totalCount,它不会进一步帮助您。

  5. 通常 totalCount 由服务器传送并由 reader 提供给商店:如果服务器返回报告,JsonReader 传送 totalCount totalProperty属性.

  6. 中设置位置的totalCount
  7. 如果您使用分页并且希望始终看到应用了正确排序和过滤的 25 个条目,则必须使用 remoteSort:trueremoteFilter:true。在 AjaxProxy 的情况下,过滤和排序必须在服务器端实现。

  8. 您在客户端应用的过滤器将始终在分页后应用,因为分页发生在服务器端。它们不能是您设置远程过滤器的同一商店的一部分,因此您必须将网格绑定到以原始商店为源的 ChainedStore。然后将客户端过滤器应用到链式存储,将远程过滤器应用到原始存储。