在extjs GridFilters中,有没有办法在不重新加载商店的情况下清除过滤器?
这就是要求:
网格下方有一个网格(#1)和另一个网格(#2)。网格(#1)有一个id列表,当点击一个特定的id时,网格(#2)会弹出一个属于该id的记录列表。
例如:网格#1:所有maangers列表
grid#2:特定maanger的所有员工列表。
网格#2有一个过滤器:关于员工姓名。
rqmt是:当在网格#1中更改选择时,清除所有旧过滤器,但不要为网格#2重新存储存储,因为网格#2存储将通过另一个功能加载。
请通过提供更多信息告诉我如何提供帮助
答案 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();