extJS 6-组合框的过滤存储

时间:2019-11-06 18:14:43

标签: extjs6

我在应用程序初始化中有一家商店。

它在视图中的多选组合框中使用,在该视图中,我选择了所需的记录并将其ID添加到变量中。

在网格中,我有一个具有相同商店的组合框,我想过滤掉商店,因此它仅包含我选择的ID。

setViewData : function(dataStore, record, readOnly) {

    var store = Ext.getStore('ScaleStore');
        store.clearFilter();

    store.filterBy(function (scaleRecord) {
        Ext.each(record.data.scaleList, function (scale) {
            if(scale.id == scaleRecord.data.schl1NrId) {                    
                return true;
            }
        });

    });
}

商店包含5条记录。

record.data.scaleList-在这里我可以说是我在multiselect组合框中选择的5条记录中的3条。

我的目标是在网格组合框中仅显示我选择的项目(5个中的3个)。 通过此代码,我可以随机获取所有记录或错误记录。

这里有任何指向我做错事情的指针吗?

谢谢大家:)

1 个答案:

答案 0 :(得分:0)

似乎您使用的Ext.each错误。 Ext.each上的文档规定以下内容:

  

可以通过从回调返回false来停止迭代   功能。返回未定义(即return;)将仅退出   回调函数并继续循环的下一个迭代。

这意味着您没有返回要过滤的值。为此,并假设您仍要使用Ext.each,则必须执行以下操作:

store.filterBy(function (scaleRecord) { // This function is executed
                                        // for each record
    var filter = false;

    Ext.each(record.data.scaleList, function (scale) {
        if(scale.id == scaleRecord.data.schl1NrId) {
            filter = true;

            return false; // return false if you want to stop the iteration
        }
    });

    return filter; // return the boolean to apply the
                   // filter to the current record
});