2016-11-29 14 views
0

NatTableに2種類のフィルタリングを同時に適用しようとしています。それぞれのフィルターは単独ではうまく動作しますが、組み合わされたときに期待通りに機能しません。NatTable Filtering

  • 私が最初にすることは、外部の基準に基づいて行の数を減らすためにFilterList.setMatcher()への呼び出しを行うです
  • 私は次の事は、さらにフィルタリングを適用するFilterRowHeaderCompositeを使用しているが、 ...(私は、フィルタヘッダーセル内の入力/アイコンが表示されていても)入力を無視するようで、何のフィルタは以下

は私が設定しているかを示すいくつかの基本的なコードスニペットで適用されていない

public void basicSetup() { 
    eventList = GlazedLists.eventList(values); 
    TransformedList<T, T> rowObjectsGlazedList = GlazedLists. 
     threadSafeList(eventList); 
    sortedList = new SortedList<>(rowObjectsGlazedList, myComparator<>()); 
    filterList = new FilterList<>(sortedList); 

    //... code ommitted 

    FilterRowHeaderComposite<T> filterRowHeaderLayer = new 
     FilterRowHeaderComposite<>(
      new DefaultGlazedListsFilterStrategy<T>(bodyLayerStack. 
       getFilterList(), columnPropertyAccessor, configRegistry), 
      sortHeaderLayer, columnHeaderDataLayer.getDataProvider(), 
      configRegistry); 

} 

public void applyExternalFilter() { 
    getBodyLayerStack().getFilterList().setMatcher(myCriteria); 
} 

public void resetExternalFilter() { 
    getBodyLayerStack().getFilterList().setMatcher(null); 
} 

ご協力いただければ幸いです。ありがとう!

答えて

1

ユーザーが適用したフィルタとプログラムで適用されたフィルタをフィルタ行を組み合わせて使用​​しようとしています。これは、フィルター行がFilterListのマッチャーを処理し、どのフィルターが誰によって追加されたのかを特定することができないため、そのようには機能しません。

静的フィルタとユーザー定義フィルタを混在させるには、追加の静的フィルタの追加をサポートするDefaultGlazedListsStaticFilterStrategyを使用する必要があります。

例では、NatTable例のアプリケーションで利用可能である - >チュートリアル例 - > GlazedLists - >フィルタ - > GlazedListsStaticFilterExample(_6033_GlazedListsStaticFilterExample.java)静的フィルタは、次に

を介して適用することができる

DefaultGlazedListsStaticFilterStrategy filterStrategy = new DefaultGlazedListsStaticFilterStrategy(
        bodyLayerStack.getFilterList(), 
        columnPropertyAccessor, 
        configRegistry); 

FilterRowHeaderComposite filterRowHeaderLayer = 
     new FilterRowHeaderComposite(
       filterStrategy, 
       columnHeaderLayer, 
       columnHeaderDataLayer.getDataProvider(), 
       configRegistry); 

filterStrategy#addStaticFilter(Matcher); 

現在、明確な方法はありません。以前に適用されたフィルタを削除することは可能です。しかし、クリアしてパッチを提供するための拡張チケットを作成してください。