ExtJs远程(列表)过滤器重置

时间:2018-05-25 17:32:03

标签: extjs

我对Extjs远程过滤器有一个问题,我认为你可以帮忙澄清一下。

我创建了一个带有远程过滤器的网格,但是如果我更新了网格信息,过滤器会保留以前加载的数据。

我已经尝试了所有内容: store.doDestroy store.removeAll ,甚至将新商店分配给具有Ex的var 。创造,但我没有成功。

我创建了Fiddle来尝试重现我的问题:

  1. 首次加载默认信息(辛普森一家)
  2. 然后打开' Hobbie'过滤器(模拟选择不同)。你得到爵士,滑冰,啤酒和针织
  3. 之后,更新网格数据(切换到Van Houtens)
  4. 最后,尝试获得Van Houtens的爱好(视频游戏,Margaritas和无),但是你得到了辛普森一家的爱好( Jazz,Skate .. ),因为过滤器是以前加载过。 (注意没有加载掩码)。
  5. 现在重新启动测试跳过步骤2(和5以避免无限循环XD)并注意如何显示正确的爱好。
  6. 我需要重置'以前的商店负载。

    注意:

    • 如果我只是执行 store.load ,则会触发请求,但返回的值不会绑定到过滤器列表。
    • 如果尝试使用此 bind:{store:' {filterStore}'} 绑定商店,请注意

1 个答案:

答案 0 :(得分:1)

您只需要为每个列“重新绑定”过滤器,如下所示:

var grid = this.up('grid');

//Clear the current filters before changing
grid.getPlugins()[0].clearFilters();

var store = grid.getStore();
setStoreFilter(store, 'Van Houten');

//Setting the store filters is not enough    
setStoreFilter(filterStore, 'Van Houten');
setStoreFilter(hobbiesStore, 'Van Houten');

//You need to "rebind" the store, it needs a little delay to work properly
setTimeout(function(){ grid.getColumns()[3].filter.bindMenuStore(hobbiesStore); }, 1000);

以下是更新后的FIDDLE