2016-07-05 50 views
0

我使用Vaadim和MySQL數據庫。我將我的數據庫(只有一列)表格作爲一個表格進行了可視化處理,並且我想單擊表格行並在點擊單行時檢索特定列的值。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 ...當我在瀏覽器中點擊第一行,第三行,第三行。 如何設置獲得「名稱」/「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

那就是它!謝謝! – Tobi123