ExtJS 4在使用filterFn函数时返回商店的记录

时间:2012-05-16 09:09:07

标签: extjs

我有一个简单的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中是否有一种方法可以返回商店的开始状态,当上面的本地过滤器被多次使用时?对我来说简单的方法就是返回商店的基本状态,然后加载它,但我在文档中没有发现这样的东西 - 有没有办法做到这一点?

由于

Leron

1 个答案:

答案 0 :(得分:1)

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

  • store.load() - 之后,您的本地副本包含数据库中的所有记录
  • store.filter(...) - 您的商店仍然拥有内存中的所有记录,但您只能访问与您的过滤器匹配的记录
  • store.clearFilter() - 您再次存储会显示所有记录,您可以再次应用不同的过滤器(请注意load()只执行一次操作)