[英]How to filter grid data with paging in ExtJS 5
我正在尝试将筛选器应用于具有活动分页的数据存储。 我目前正在使用静态数据存储,而不是使用代理。 但是,该过滤器将应用于数据网格中显示的当前页面,而不是整个数据存储。
情况1:我尝试停用分页,应用过滤器,然后再次激活分页。 但是,该过滤器对于当前页面(而不是整个数据存储)处于活动状态。
情况2:在应用情况1之前,我尝试将排序器添加到数据存储中。 它也不起作用。
有什么方法可以过滤所有数据并在分页中显示过滤结果?
注意:我尝试在Sencha Fiddle上编写类似的代码,但是在该Fiddle上未分页, 有示例代码
静态存储数据不支持分页,因为分页是由代理和读取器完成的。 但是,您可以使用enablePaging:true
在pagingmemory
代理(ExtJS 4)或memory
代理(ExtjS 5/6)上定义数据。
对于ajax
代理,分页是通过将页面大小和开始属性发送到服务器来完成的。 如果服务器忽略这些属性,并且将其在数据库中的所有内容放回服务器,则分页将不适用于ajax
代理。 服务器可能只发回应在网格中可见的记录。
请注意, ajax
代理还必须传递totalCount
才能使分页正常工作。 要查看分页工具栏是否正常运行,请添加到您的商店: totalCount:25
。 而且,您的pageingToolbar向您显示了五个页面。 其他所有内容仍无法正常工作,因为请参阅1.再次删除totalCount
,它将对您没有任何帮助。
通常, totalCount
由服务器交付,并由阅读器提供给商店:如果服务器在totalProperty
属性中设置的位置上报告了totalCount,则JsonReader
交付totalCount
。
如果使用分页,并且希望始终看到25个应用了正确的排序和过滤的条目,则必须使用remoteSort:true
和remoteFilter:true
。 如果是AjaxProxy
,则必须在服务器端实施过滤和排序。
您在客户端应用的过滤器将始终在页面调度后应用,因为页面调度发生在服务器端。 它们不能属于设置远程过滤器的同一商店的一部分,因此您必须将网格绑定到以原始商店为源的ChainedStore。 然后将客户端筛选器应用于链接的商店,将远程筛选器应用于原始的商店。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.