Vaadin 在按钮上单击“刷新添加了新行的表”

Vaadin 在按钮上单击“刷新添加了新行的表”,vaadin,Vaadin,我已经创建了一个表和一个按钮。单击该按钮后,我需要添加行。 为此,我使用了按钮单击方法在表中添加一行 问题是中的行被添加到表中(我可以在日志中看到), 但屏幕变为空白,只显示按钮 如果退出并再次导航到屏幕,则可以看到添加的新行 如何查看添加的新行?一旦添加,立即性 一些代码可能有助于进一步了解可能的错误,但我也建议您在添加表行后直接调用以下代码行 yourTable.setContainerDataSource(yourTable.getContainerDataSource()); 这将更新

我已经创建了一个表和一个按钮。单击该按钮后,我需要添加行。 为此,我使用了
按钮单击
方法在表中添加一行

问题是中的行被添加到表中(我可以在日志中看到), 但屏幕变为空白,只显示按钮

如果退出并再次导航到屏幕,则可以看到添加的新行


如何查看添加的新行?一旦添加,立即性

一些代码可能有助于进一步了解可能的错误,但我也建议您在添加表行后直接调用以下代码行

yourTable.setContainerDataSource(yourTable.getContainerDataSource());

这将更新表的数据源并强制重新绘制。若您提供了一些代码,则可以在单击按钮期间使用IndexedContainer在表中添加新行,从而提供更多帮助

范例

Create IndexedContainer
-----------------------
private IndexedContainer getTblTerminals(IndexedContainer container) 

{

container.removeAllItems();

container.addContainerProperty("Terminal_Id", String.class, defaultValue);

g_TermialPojo=ws.readAll();

for(Terminal pojo:g_TermialPojo)

{


Object itemId=container.addItem();

strTid=String.valueOf(pojo.getTid());


            container.getContainerProperty(itemId,"Terminal_Id").setValue(strTid.toString());


        }

        return container;

}


//To add indexedcontainer in your table
-------------------------------------------

Example



        table.setContainerDataSource(getTblTerminals((IndexedContainer)table.getContainerDataSource()));


table.setImmediate(true);

如何添加行?到桌子上,到容器上?和以往一样,看到代码会帮助我们帮助你。谢谢Charles。。。问题解决了。。。在按钮上添加行后,只需将表添加到容器中单击…user1225344:请提供一些代码和您使用的解决方案。这将帮助其他人解决类似的问题。这应该不是必需的,因为表实现了Container.ItemSetChangeListener(和Container.PropertySetChangeListener),它侦听容器的更改并相应地更新自身。我相信OP的代码缺少一些关键的东西。没错,我不知道新数据添加到了容器中,我以为他/她只是将其添加到了一个备份模型中,当页面重新加载时,表数据源使用添加的项拾取了新集合。