ExtJs组合过滤不能正常工作

ExtJs combo filtering doesn't work properly

本文关键字:工作 常工作 组合 过滤 不能 ExtJs      更新时间:2023-09-26

我尝试使用2个ExtJs组合。

当用户更改第一个(更改事件)时,将更改第二个的存储。(与国家/地区过滤非常相似。当用户选择国家时,我将状态加载到第二个组合存储中)。

直到这里,一切都很好。

当我向第二个组合添加beforequery事件侦听器时,问题出现了:

beforequery: function(record) {
    record.query = new RegExp(record.query, 'i');
    record.forceAll = true;
}

我这样做是为了使用户能够更方便地搜索组合(也是从单词的中间,而不仅仅是从开头)。

它成功了,

但是当我使用这个beforequery侦听器时,我在组合的存储中所做的更改并不总是显示在组合中。显然,只有当我添加记录到商店,它显示在组合,但当我删除记录id不删除它们。

有人知道为什么会这样吗?

以'before-'开头的事件的event函数应该返回true以继续,返回false以取消事件。

beforequery: function(record) {
    record.query = new RegExp(record.query, 'i');
    record.forceAll = true;
    return true;
}

ExtJs似乎在Store.removeAll()函数中有一个bug。

(他们清除所有记录,但忘记从存储的快照中删除它们)。

我必须删除对组合的底层store.removeAll()的所有调用,以一个while()逐个删除项。

这也应该适用于新版本的extjs (>=5):

var allRecords = store.getData().getSource() || store.getData();
allRecords.removeAll();