2016-07-05 5 views
0

私はVaadim und MySQL DBを使用しています。私はテーブルとして私のDBのテーブル(1つの列)を視覚化し、テーブルの行をクリックして、特定の列の値を取得したいときは、単一​​行でクリックします。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 ...私が最初の、セカンド、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

関連する問題