EXTjs gridfilter:如何在不重新加载商店的情况下清除过滤器?

时间:2011-02-16 00:12:33

标签: extjs

在extjs GridFilters中,有没有办法在不重新加载商店的情况下清除过滤器? 这就是要求:
网格下方有一个网格(#1)和另一个网格(#2)。网格(#1)有一个id列表,当点击一个特定的id时,网格(#2)会弹出一个属于该id的记录列表。
例如:网格#1:所有maangers列表 grid#2:特定maanger的所有员工列表。

网格#2有一个过滤器:关于员工姓名。

rqmt是:当在网格#1中更改选择时,清除所有旧过滤器,但不要为网格#2重新存储存储,因为网格#2存储将通过另一个功能加载。

请通过提供更多信息告诉我如何提供帮助

4 个答案:

答案 0 :(得分:4)

经过一些Firebug踩踏后,我发现它的效果非常好。

var store = this.getStore();
store.remoteFilter = false;
store.clearFilter();
store.remoteFilter = true;
store.filter(...);

remoteFilter似乎不是一个记录的属性,但它会在设置为false时暂停xhr调用。

当您将remoteFilter设置为false时,调用clearFilter()时,load()功能会被切换。

答案 1 :(得分:0)

GridFilter类可用的clearFilters()方法应该能够清除过滤器。你试试看了吗?此外,何时加载网格#2?根据您的第一个段落,当用户选择经理时,列出员工。但是在你提出要求的第二段中,你说网格#2是通过另一个函数加载的!虽然不清楚。

答案 2 :(得分:0)

您是否尝试过暂停网格上的事件? grid.suspendEvents(); grid.doYourMagic(); grid.resumeEvents();

无论如何,重新加载商店很可能是由一个事件引发的。

答案 3 :(得分:0)

我遇到了同样的问题,但没有使用Grid但使用DataView,但是,这可能同样适用于您的情况。我最初尝试过:

var store = this.getStore();
store.suspendEvents();
store.clearFilter();
store.resumeEvents();
store.filter(...);

这不起作用 - 仍有2个HTTP请求,一次用于clearFilter(),一次用于filter(...)

但是,以下工作:

var store = this.getStore();
store.getProxy().extraParams['q'] = keywords;
store.load();