特定 table 列的 Vaadin ValueChangeEvent getProperty
Vaadin ValueChangeEvent getProperty for a specific table column
我正在使用 Vaadin 和 MySQL 数据库。我将我的数据库(只有一列)的 table 可视化为 Table 并且我想单击 table 行并在单击单个时检索特定列的值行。
//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);
}
});
我的 Table 包含类别名称。
当我在浏览器中单击 Table 的第一行、第二行和第三行时,System.out.println
打印 1,2,3...。
如何获取“名称”/“HAUPTKATEGORIE”列?
我尝试了一整天,但没有成功。
您必须从容器属性中读取列的内容。为此,您需要 propertyId。在你的情况下可能 "name" 或 "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());
}
});
我正在使用 Vaadin 和 MySQL 数据库。我将我的数据库(只有一列)的 table 可视化为 Table 并且我想单击 table 行并在单击单个时检索特定列的值行。
//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);
}
});
我的 Table 包含类别名称。
当我在浏览器中单击 Table 的第一行、第二行和第三行时,System.out.println
打印 1,2,3...。
如何获取“名称”/“HAUPTKATEGORIE”列?
我尝试了一整天,但没有成功。
您必须从容器属性中读取列的内容。为此,您需要 propertyId。在你的情况下可能 "name" 或 "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());
}
});