2013-06-18 2 views
0

다른 테이블에서 클릭 한 것을 기반으로 하나의 테이블을 필터링하는 방법을 궁금합니다. 예를 들어 국가 표에서 러시아를 클릭하면 러시아의 모든 사람들을 이름 표에 필터링해야합니다. vaadin을 사용하여이 작업을 수행하는 방법을 알고 싶습니다. 아래에 관련 코드를 추가했습니다. 국가 표는 국가를 클릭 할 때 이름 표를 필터링한다고 가정합니다. ,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); 
    } 
} 

여기 당신은 물론,에 대해 알려 선택 기준 테이블에 ValueChangeListener을 설정할 수 있습니다 필터

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

    }); 
} 
+0

예외를 추가 할 수 있습니까? – nexus

답변

0

를 사용하여 내 검색 방법 :

여기 내 필터 방법 가치 변화. 값 변경 방법에서는 선택한 항목을 가져올 수 있으며이 항목에 따라 목표 테이블에로드를 수행합니다.

+0

의견을 주셔서 감사합니다. 선택 항목에 대한 선택을 듣기 위해 리스너를 추가했습니다. 이 선택에 따라 다른 테이블을 필터링하는 데 문제가 있습니다. – abden003

+0

@ abden003 무엇이 문제가됩니까? 샘플 코드와 같은 세부 정보를 제공해 주시겠습니까? – nexus

+0

뭔가를 선택할 때 (필터 필터 클래스를 만든) 다른 테이블을 필터링하도록 수신기를 추가했습니다. 필터는 String을 사용하고 Listener (Property.ValueChangeListener)는 속성을 가져오고, toString을 사용하거나 속성을 문자열로 변환 할 때마다 vaadin에서 지원되지 않는다는 오류 메시지가 나타납니다. – abden003

관련 문제