2016-07-05 1 views
0

Vaadim und MySQL DB를 사용하고 있습니다. 내 DB의 테이블 (한 열만)을 테이블로 시각화 한 다음 한 행을 클릭하면 테이블 행을 클릭하고 특정 열의 값을 검색하려고합니다.특정 테이블 열의 Vaadin ValueChangeEvent getProperty

//Database Connection Class 
... 
private SQLContainer catExtractionContent = null; 
FreeformQuery catExtractionQuery = new FreeformQuery("Select name as HAUPTKATEGORIE from Category where cat_main is null", connectionPool); 
catExtractionContent = new SQLContainer(catExtractionQuery); 

//UI-Class 
private Object mainCatname=null; 
mainCatTable = new Table(); 
mainCatTable.setContainerDataSource(getDBConn().getcatExtractionContent()); //This retrieves the SQL Container from obove 
mainCatTable.addListener(new ValueChangeListener() { 

     public void valueChange(ValueChangeEvent event) { 
     mainCatname = event.getProperty().getValue(); 
     System.out.println(mainCatname); 
     } 
}); 

내 테이블에 범주 이름이 있습니다.

System.out.println은 1,2,3 ... 브라우저에서 내 테이블의 첫 번째, 두 번째, 세 번째 행을 클릭 할 때 인쇄합니다. 어떻게 "name"/ "HAUPTKATEGORIE"열을 가져올 수 있습니까? ???

나는 하루 종일 노력했지만 성공하지 못했습니다.

답변

1

열의 내용을 containerproperty에서 읽어야합니다. 이를 위해서는 propertyId가 필요합니다. 귀하의 경우에는 "이름"또는 "HAUPTKATEGORIE"라고 표시하십시오. SQLContainer가 어떻게 작동하는지 모르겠습니다.

mainCatTable.addValueChangeListener(new ValueChangeListener() { 

    @Override 
    public void valueChange(ValueChangeEvent event) { 

     Property<Table> p = event.getProperty(); //property of valuechangeevent in this case the Table instance 
     Object itemId = p.getValue(); //selected item in table. also known as "itemId" 

     Property<?> containerPropertyName = mainCatTable.getContainerProperty(itemId, "HAUPTKATEGORIE"); 
     System.out.println("HAUPTKATEGORIE : " + containerPropertyName.getValue()); 

    } 
}); 
+0

Thats it! 고맙습니다! – Tobi123