如何在 ExtJS 5 中使用分页过滤网格数据
How to filter grid data with paging in ExtJS 5
我正在尝试将过滤器应用于具有活动分页的数据存储。
我目前正在使用静态数据存储而不是使用代理。
但是,筛选器应用于数据网格中显示的当前页面而不是整个数据存储。
案例 1:我尝试停用分页,应用过滤器,然后再次激活分页。但是,过滤器对当前页面有效,而不是对整个数据存储有效。
案例 2: 我尝试在应用 案例 1 之前将排序器添加到数据存储。它也没有用。
有什么方法可以过滤所有数据并分页显示过滤结果吗?
注意:我试图在 Sencha Fiddle 上编写类似的代码,但网格没有在此 fiddle、there is sample code
上分页
静态存储数据不支持分页,因为分页是由代理和reader完成的。但是,您可以使用 enablePaging:true
.
在 pagingmemory
代理(ExtJS 4)或 memory
代理(ExtjS 5/6)上定义数据
对于 ajax
代理,分页是通过向服务器发送页面大小和开始 属性 来完成的。如果服务器忽略这些属性并返回它在数据库中的所有内容,则分页将无法用于 ajax
代理。服务器可能只发回应该在网格中可见的记录。
请注意,ajax
代理还必须传送 totalCount
才能使寻呼工作。要查看 pagingToolbar 的工作情况,请添加到您的商店:totalCount:25
。瞧,您的 pagingToolbar 显示有五个页面。其他一切还不能正常工作,因为请参阅 1。再次删除 totalCount
,它不会进一步帮助您。
通常 totalCount
由服务器传送并由 reader 提供给商店:如果服务器返回报告,JsonReader
传送 totalCount
totalProperty
属性.
中设置位置的totalCount
如果您使用分页并且希望始终看到应用了正确排序和过滤的 25 个条目,则必须使用 remoteSort:true
和 remoteFilter:true
。在 AjaxProxy
的情况下,过滤和排序必须在服务器端实现。
您在客户端应用的过滤器将始终在分页后应用,因为分页发生在服务器端。它们不能是您设置远程过滤器的同一商店的一部分,因此您必须将网格绑定到以原始商店为源的 ChainedStore。然后将客户端过滤器应用到链式存储,将远程过滤器应用到原始存储。
我正在尝试将过滤器应用于具有活动分页的数据存储。 我目前正在使用静态数据存储而不是使用代理。 但是,筛选器应用于数据网格中显示的当前页面而不是整个数据存储。
案例 1:我尝试停用分页,应用过滤器,然后再次激活分页。但是,过滤器对当前页面有效,而不是对整个数据存储有效。
案例 2: 我尝试在应用 案例 1 之前将排序器添加到数据存储。它也没有用。
有什么方法可以过滤所有数据并分页显示过滤结果吗?
注意:我试图在 Sencha Fiddle 上编写类似的代码,但网格没有在此 fiddle、there is sample code
上分页静态存储数据不支持分页,因为分页是由代理和reader完成的。但是,您可以使用
enablePaging:true
. 在 对于
ajax
代理,分页是通过向服务器发送页面大小和开始 属性 来完成的。如果服务器忽略这些属性并返回它在数据库中的所有内容,则分页将无法用于ajax
代理。服务器可能只发回应该在网格中可见的记录。请注意,
ajax
代理还必须传送totalCount
才能使寻呼工作。要查看 pagingToolbar 的工作情况,请添加到您的商店:totalCount:25
。瞧,您的 pagingToolbar 显示有五个页面。其他一切还不能正常工作,因为请参阅 1。再次删除totalCount
,它不会进一步帮助您。通常
totalCount
由服务器传送并由 reader 提供给商店:如果服务器返回报告,JsonReader
传送totalCount
totalProperty
属性. 中设置位置的totalCount
如果您使用分页并且希望始终看到应用了正确排序和过滤的 25 个条目,则必须使用
remoteSort:true
和remoteFilter:true
。在AjaxProxy
的情况下,过滤和排序必须在服务器端实现。您在客户端应用的过滤器将始终在分页后应用,因为分页发生在服务器端。它们不能是您设置远程过滤器的同一商店的一部分,因此您必须将网格绑定到以原始商店为源的 ChainedStore。然后将客户端过滤器应用到链式存储,将远程过滤器应用到原始存储。
pagingmemory
代理(ExtJS 4)或 memory
代理(ExtjS 5/6)上定义数据