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

How to filter grid data with paging in ExtJS 5

本文关键字:分页 过滤 网格 数据 ExtJS      更新时间:2023-09-26

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

情况1:我尝试停用分页,应用筛选器,然后再次激活分页。但是,过滤器对于当前页面是活动的,而不是对于整个数据存储。

情况2:在应用案例1之前,我尝试将分类器添加到数据存储中。它也不起作用。

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

注意:我试着在Sencha Fiddle上写一个类似的代码,但网格没有在这个Fiddle上分页,有一个示例代码

  1. 静态存储数据不支持分页,因为分页是由代理和读取器完成的。但是,您可以在pagingmemory代理(ExtJS 4)或具有enablePaging:truememory代理(ExtJS 5/6)上定义数据。

  2. 对于ajax代理,分页是通过向服务器发送页面大小和启动属性来完成的。如果服务器忽略这些属性并返回数据库中的所有内容,则ajax代理将无法进行分页。服务器只能发回应该在网格中可见的记录。

  3. 请注意,ajax代理还必须传递totalCount才能使寻呼工作。要查看分页工具栏的工作情况,请添加到您的商店:totalCount:25。瞧,你的分页工具栏显示有五个页面。其他一切都还不能正常工作,因为请参见1。再次删除totalCount,对您没有任何帮助。

  4. 通常情况下,totalCount由服务器传递,并由读取器提供给商店:如果服务器在totalProperty属性中设置的位置报告totalCount,则JsonReader传递totalCount

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

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