我的网格指的是 MySQL 数据库表。
this.grid = new Grid<>(Person.class, false);
Run Code Online (Sandbox Code Playgroud)
然后,我添加了属性列,以及链接到包含删除按钮的 ui 的渲染组件列。
this.grid.addColumn(RenderedComponent.Renderer(DeleteButton::new))
Run Code Online (Sandbox Code Playgroud)
因此,网格的每一行都有一个要删除的按钮。
我的问题是我不知道如何获取引用按钮所在行的 bean。因为当我有了这个时,我希望可以通过单击按钮来完成此操作:
new PersonDAO().remove(bean);
Run Code Online (Sandbox Code Playgroud)
然后刷新网格。
在列渲染器内,您可以访问该项目。您只是还没有使用它来创建按钮。代替
this.grid.addColumn(RenderedComponent.Renderer(DeleteButton::new))
Run Code Online (Sandbox Code Playgroud)
你可以这样做
this.grid.addComponentColumn(item -> new DeleteButton(item));
Run Code Online (Sandbox Code Playgroud)
并更改您的DeleteButton类以期望构造函数中包含该项目。您现在可以使用该项目将其从点击侦听器内的数据库中删除
如果您还想刷新网格,您还必须知道点击侦听器内的网格。将网格也传递到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();
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2962 次 |
| 最近记录: |