使网格的特定列在 Vaadin 8 中可编辑

Make specific columns of a Grid editable in Vaadin 8

在 Vaadin 8 中,我有一个 Grid,其中的列和行使用 setDataProviderjsondata 填充。现在,我有一个 edit 按钮,单击它后用户应该能够编辑 Grid.

中的(几个)列

在 Vaadin 8 中,有多种方法可以将编辑合并到网格中。

行编辑器有一个内置功能,也可以在非缓冲模式下使用。这不等同于让整个列都可编辑,但可以很好地模仿它,同时您可以使用 Binder 来设置字段、验证等。还有一个附加组件可以帮助 keyboard navigation 使用无缓冲的编辑器。

或者您可以使用 Grid Renderers Collection add-on,它提供了一组可编辑的渲染器和编辑事件等。这就是您正在寻找的,面向列的编辑。当只有少数列可编辑时,这是一种有用的方法。

https://vaadin.com/directory/component/grid-renderers-collection-for-vaadin7

如果您广泛使用渲染器,将会有更多的小部件供浏览器渲染,这 UI 可能比使用例如非缓冲模式下的行编辑器。这在很大程度上取决于您的应用程序和用例。我建议研究多种方法,select 最适合您的方法。

第三种选择是使用 ComponentColumn 功能,请参阅 Vaadin documentation 中的组件渲染器一章。这比实现自定义渲染器要容易一些,但会增加一些开销。