4

店舗用のフィルターを使用しています。問題は、完全一致を返したいということです。

例えば:

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);
    }
}

完全に一致させるにはどうすればよいですか?

4

3 に答える 3

14

ExtJS 4の場合、exactMatchおよびcaseSensitive構成オプションを使用するだけです。

store.filter({
  property: fieldName,
  value: fieldValue,
  exactMatch: true,
  caseSensitive: true
})
于 2012-11-06T13:20:21.687 に答える
5

フィルタで正規表現を使用して、比較値がフレーズの終わりであることを確認できます。

それか、filterBy()メソッドを使用して比較関数を定義します。例:

store.filterBy(this, function(rec, id) {
    if(rec.get('thefieldtocompare') === "what you want to compare against") {
        return true;
    }
    else {
        return false;
    }
});
于 2012-08-16T09:58:36.007 に答える
3

使用しているExtJSのバージョンについては言及していませんが、次の2つの一般的なアプローチがあります。

  1. 正確なマッシングパターンで正規表現を提供します。

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

    また

  2. filterByに独自のマッチング関数を提供する

    store.filterBy(function(rec) {
        return rec.get('productsCat') === data.productsCat;
    });
    
于 2012-08-16T10:02:08.893 に答える