【问题标题】:Vaadin ValueChangeEvent getProperty for a specific table columnVaadin ValueChangeEvent 获取特定表列的属性
【发布时间】:2023-04-02 00:20:01
【问题描述】:

我正在使用 Vaadin 和 MySQL 数据库。我将我的数据库表(只有一列)可视化为一个表,我想单击表行并在单行上发生单击时检索特定列的值。

//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”列?

我尝试了一整天,但没有成功。

【问题讨论】:

    标签: java mysql listener vaadin valuechangelistener


    【解决方案1】:

    您必须从容器属性中读取列的内容。为此,您需要 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());
    
        }
    });
    

    【讨论】:

    • 就是这样!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多