0

別のテーブルでクリックした内容に基づいて、あるテーブルをフィルタリングする方法を考えていました。たとえば、国テーブルでロシアをクリックすると、名前テーブルでロシア出身のすべての人がフィルター処理されます。vaadin を使用してこれを行う方法を知りたいです。以下に関連するコードをいくつか追加しました。国をクリックすると、国テーブルが名前テーブルをフィルタリングすることになっています。

これが私のフィルター方法です:

public class CountryFilter implements Filter {
    public String needle;
    public CountryFilter(String needle) {
        this.needle = needle;
    }

    public boolean appliesToProperty(Object id) {
        return true;
    }
    public boolean passesFilter(Object itemId, Item item) {
        String haystack = ("" + item.getItemProperty(Name) +
                                item.getItemProperty(Country)).toLowerCase();
        return haystack.contains(needle);
    }
}

フィルターを使用する私の検索方法は次のとおりです

    public void initCountrySearch() {   
    country.setSelectable(true);
    country.setImmediate(true);
    name.setVisibleColumns(new String[] {"name"});
    country.setVisibleColumns(new String[] {"country"});


country.addValueChangeListener(new Property.ValueChangeListener() {
    public void valueChange(ValueChangeEvent event) {
            // TODO Auto-generated method stub

            data.name.removeAllContainerFilters();
            data.name.addContainerFilter(new CountryFilter(event.getProperty().getValue().toString()));
        }

    });
}
4

1 に答える 1

0

値の変更について通知する選択基準テーブルに ValueChangeListener を設定できます。値変更メソッドでは、選択したアイテムを取得でき、このアイテムに従ってターゲット テーブルにロードします。

于 2013-06-18T19:42:53.550 に答える