【问题标题】:Show all rows in grid after clearing filters in ExtJS在 ExtJS 中清除过滤器后在网格中显示所有行
【发布时间】:2014-03-18 13:15:25
【问题描述】:

我有一个数据存储和一个网格。我在商店中添加了过滤器,当我在网格中看到结果时,它们可以正常工作。但是,一旦我禁用了所有过滤器,也就是从我的商店中清除它们,我想查看网格中的所有行,而无需从 Web 服务重新加载它们,这是一项繁重的任务。所有数据都已从服务中获取,无需再次重新加载。

我该怎么做?商店里有什么功能吗?

【问题讨论】:

  • 所以让我直截了当地说,您在第一次加载时从您的网络服务加载所有数据,这可能意味着您已将您的商店设置为ajax 代理?但是,如果您一举加载所有这些,为什么不直接将其作为一个实际的 Ajax 调用,并将您的存储区设为内存存储区呢?您是否依赖后端进行过滤/排序?
  • 是的,我一次性从服务中加载所有数据,一个 http 请求。它具有有限数量的整数,因此可以像这样完成。我在本地过滤所有数据,只需更改过滤器。商店已经是记忆了。不,我不依赖后端进行过滤/排序
  • 好的,听起来你可以照我说的做……还是我遗漏了其他一些信息?
  • 调用什么函数来再次查看网格中的所有数据?商店加载()?我有一个全局变量中的所有数据
  • 我试过 store.filter() 没有参数,它不起作用

标签: extjs extjs4 extjs-grid extjs-stores


【解决方案1】:

已经有一个类似的问题有正确答案。简而言之,将remoteFilter设置为false后,需要调用不带参数的filter方法:

store.remoteFilter = false;
store.clearFilter();
store.remoteFilter = true;
store.filter();

这是一个 jsfiddle:http://jsfiddle.net/8Gmtd/

【讨论】:

  • 我相信store.clearFilter(true) 就是这样做的,不是吗?所以你不应该直接设置他们的公共变量remoteFilter
  • @incutonez 对不起,但似乎没有。这是jsfiddle。但是,如果您取消注释行代码开始工作。如果我理解正确, clearFilter 只是从商店中删除过滤器,但不会刷新数据快照。 Filter 方法根据新的一组过滤器(在这种情况下为空)计算新的快照,并且 remoteFilter 变量阻止存储从远程服务器获取数据。
  • 嗯,好像应该这样。文档状态“对于远程过滤的存储,这意味着过滤器集合已清除,但不会从服务器重新加载存储”,即如果您向 clearFilter 提供 true。所以否则,它应该重新加载数据......除非我不完全理解这个问题。
【解决方案2】:

我怀疑您的网格视图没有刷新。试试这个:

mygrid.getView().refresh()

【讨论】:

  • 试过了。商店是空的。这就是为什么我在网格中看不到任何东西。也许是因为我使用 loadData() 而不是 load()? reload() 没有初始设置才能工作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多