我在应用程序初始化中有一家商店。
它在视图中的多选组合框中使用,在该视图中,我选择了所需的记录并将其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个)。 通过此代码,我可以随机获取所有记录或错误记录。
这里有任何指向我做错事情的指针吗?
谢谢大家:)
答案 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
});