如何在dstore上应用多个过滤器?

时间:2015-12-14 12:36:06

标签: dojo dgrid dstore

假设dstore包含名字,姓氏和年龄的记录。现在,我想要名字为“Name1”或年龄= 25的记录。如何在dstore中执行此操作? 如果我做, recordStore.filter({name: 'Name1'}, {age: 25}); 然后它返回名称为“Name1”且年龄= 25的记录。

另一个问题,在我dstore的记录中,还有一个数组(包含颜色)。我想根据用户选择的颜色过滤结果。我面临的问题是dstore.filter()检查值的完全匹配,但是如果数组中的一个值与所选值匹配,我想保留记录。怎么做?

2 个答案:

答案 0 :(得分:1)

您需要像这样扩展过滤器功能:

recordStore.filter( function (object) {
    return object.Name === 'Name1' || object.age === 25;
});

答案 1 :(得分:1)

终于明白了!

可以从Filter创建

store个对象,然后将其用作filter的{​​{1}}方法的参数。

进行两个查询的OR / AND:

store

匹配数组中的一个值:

recordStoreFilter= new recordStore.Filter()
name1Filter= recordStoreFilter.eq('name': 'Name1')
age25Filter= recordStoreFilter.eq('age', 25)

unionFilter= recordStoreFilter.or(name1Filter, age25Filter)
intersectionFilter= recordStoreFilter.and(name1Filter, age25Filter)

unionData= recordStore.filter(unionFilter)
intersectionData= recordStore.filter(intersectionFilter)

//Set using the following
recordGrid.set('collection', unionData) //or intersectionData

有关详情,请参阅here