如何使用完全匹配过滤extjs商店

时间:2012-08-16 09:51:50

标签: extjs filter store extjs4.1

我正在为商店使用过滤器。问题是我想要返回完全匹配。

例如:

如果我在网格中过滤aa-1,则会显示aa-1aa-1***,但如果我只想查看aa-1的所有内容。

我用它来过滤:

listeners: {
    itemclick: function() {
        var data = grid.getSelectionModel().selected.items[0].data;
        store.clearFilter();
        store.filter('productsCat', data.productsCat);
    }
}

如何进行完全匹配需要做什么?

3 个答案:

答案 0 :(得分:13)

对于ExtJS 4,您只需使用exactMatch和caseSensitive配置选项:

store.filter({
  property: fieldName,
  value: fieldValue,
  exactMatch: true,
  caseSensitive: true
})

答案 1 :(得分:5)

您可以在过滤器中使用正则表达式,以确保比较值是短语的结尾。

或者使用filterBy()方法来定义比较函数,例如:

store.filterBy(this, function(rec, id) {
    if(rec.get('thefieldtocompare') === "what you want to compare against") {
        return true;
    }
    else {
        return false;
    }
});

答案 2 :(得分:3)

您没有提到您正在使用的ExtJS版本,但这里有两种常规方法:

  1. 提供具有精确mathing模式的正则表达式:

    store.filter('productsCat', new RegExp('^' + Ext.escapeRe(data.productsCat) + '$'));
    

  2. filterBy

    提供您自己的匹配功能
    store.filterBy(function(rec) {
        return rec.get('productsCat') === data.productsCat;
    });