0

我有一个简单textfiled的方法,用于通过获取插入的值并将过滤器添加到存储中来在我的网格中搜索,如下所示:

instructionSearchField: function(field, e) {
        if (e.getKey() == e.ENTER) {
            var searchTxt = this.getValue();

            this.recordsStore = Ext.data.StoreManager.lookup('Instructions');
            this.recordsStore.clearFilter(true);
            this.recordsStore.filter({
                filterFn: function(item) { 
                    return item.get('title').toLowerCase().indexOf(searchTxt.toLowerCase()) != -1;
                        }
                    });
            this.recordsStore.load();
            }
        },

因此,用户可以随心所欲地进行搜索 - 它可以正常工作。问题是在某些时候我想返回过滤/搜索之前的网格状态。从服务器加载它并不容易,所以我想知道 ExtJS4 中是否有一种方法可以返回商店的开始状态,当上面的本地过滤器被多次使用时?对我来说最简单的方法是只返回商店的基本状态然后加载它,但我在文档中没有找到这样的东西 - 有没有办法做到这一点?

谢谢

勒隆

4

1 回答 1

2

如果您不使用远程过滤(如您的服务器过滤记录并仅返回匹配集),您不需要load()在应用过滤器后执行此操作。这是基本的工作流程:

  • store.load()- 之后您的本地副本包含数据库中的所有记录
  • store.filter(...)- 您存储的内存中仍有所有记录,但您只能访问与您的过滤器匹配的记录
  • store.clearFilter()- 您再次存储显示所有记录,您可以再次应用不同的过滤器(请注意,load()操作仅执行一次)
于 2012-05-16T12:09:38.500 回答