【发布时间】:2011-07-25 19:48:24
【问题描述】:
我正在研究一个使用过滤器的网格,但它只过滤第一页。当我单击“下一步”时,它会忘记我的过滤器并加载下一组记录。即使我单击“下一步”从分页加载下一组记录,如何让它记住过滤器?
谢谢, SS
【问题讨论】:
我正在研究一个使用过滤器的网格,但它只过滤第一页。当我单击“下一步”时,它会忘记我的过滤器并加载下一组记录。即使我单击“下一步”从分页加载下一组记录,如何让它记住过滤器?
谢谢, SS
【问题讨论】:
您需要将过滤器参数设置到商店的baseParams。在 store 上的 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'}]})
要进行正确的配置,请在您的导航器开发人员工具或后端调查您的请求
【讨论】: