Java Vaadin 14-使用“渲染删除”按钮删除网格中的一行
我的网格指的是一个MySQL数据库表Java Vaadin 14-使用“渲染删除”按钮删除网格中的一行,java,vaadin,Java,Vaadin,我的网格指的是一个MySQL数据库表 this.grid = new Grid<>(Person.class, false); 因此,在网格的每一行中都有一个要删除的按钮 我的问题是,我不知道如何获取引用按钮所在行的bean。 因为当我有了它,我希望能在点击按钮时做到这一点: new PersonDAO().remove(bean); 然后刷新网格。在列渲染器中,您可以访问该项。您只是还没有使用它来创建按钮。而不是 this.grid.addColumn(RenderedCo
this.grid = new Grid<>(Person.class, false);
因此,在网格的每一行中都有一个要删除的按钮
我的问题是,我不知道如何获取引用按钮所在行的bean。
因为当我有了它,我希望能在点击按钮时做到这一点:
new PersonDAO().remove(bean);
然后刷新网格。在列渲染器中,您可以访问该项。您只是还没有使用它来创建按钮。而不是
this.grid.addColumn(RenderedComponent.Renderer(DeleteButton::new))
你可以这样做
this.grid.addComponentColumn(item -> new DeleteButton(item));
并将DeleteButton
类更改为在构造函数中预期该项。现在可以使用该项从单击侦听器中的数据库中删除它
如果您还想刷新网格,还必须知道clicklistener中的网格。将网格也传递到DeleteButton中,或者您可以在DeleteButton类之外定义clicklistener。这可能会使DeleteButton类过时,除非它具有一些自定义样式或其他增强功能
// using Button instead of DeleteButton for clarity
this.grid.addComponentColumn(item -> new Button("Delete", click -> {
this.personDao.remove(item); // NEVER instantiate your service or dao yourself, instead inject it into the view
this.grid.getDataProvider().refresh();
}));
在列渲染器中,您可以访问该项。您只是还没有使用它来创建按钮。而不是
this.grid.addColumn(RenderedComponent.Renderer(DeleteButton::new))
你可以这样做
this.grid.addComponentColumn(item -> new DeleteButton(item));
并将DeleteButton
类更改为在构造函数中预期该项。现在可以使用该项从单击侦听器中的数据库中删除它
如果您还想刷新网格,还必须知道clicklistener中的网格。将网格也传递到DeleteButton中,或者您可以在DeleteButton类之外定义clicklistener。这可能会使DeleteButton类过时,除非它具有一些自定义样式或其他增强功能
// using Button instead of DeleteButton for clarity
this.grid.addComponentColumn(item -> new Button("Delete", click -> {
this.personDao.remove(item); // NEVER instantiate your service or dao yourself, instead inject it into the view
this.grid.getDataProvider().refresh();
}));