我正在开发一个使用过滤器的网格,但它只过滤第一页。当我单击“下一步”时,它会忘记我的过滤器并加载下一组记录。即使我单击“下一步”从分页加载下一组记录,如何让它记住过滤器?
您需要将过滤器参数设置到商店的
baseParams
中。 在商店的 load
调用中传递过滤器参数只会将它们用于第一次加载调用 - 分页工具栏进行的后续调用将不会传递它们。
store.setBaseParam('query', 'search-text'); // always send 'query'
store.load({ params: { start: 0, limit: 40 } });
// this will send:
// { query: 'search-text', start: 0, limit: 40 }
store.load({ params: { query: 'bob', start: 41, limit: 40 } });
// baseParams overridden by load params
// { query: 'bob', start: 41, limit: 40 }
store.load(); // only sends baseParams
// { query: 'search-text' }
ExtJS
Ext.data.Store
docs 有详细信息。
设置
baseParams
,如上面的答案所示,仅适用于 EXTJS 3.x 或更低版本。
对于 EXTJS 4.xx,我们必须在商店的代理中添加带有您的查询的 extraParam
:
store.getProxy().extraParam= A JSON ENCODED QUERY
喜欢:
store.getProxy().extraParam= Ext.JSON.encode({'sort':[{'id':'ASC'}]})
为了进行正确的配置,请在导航器开发人员工具或后端中调查您的请求