我正在Vaadin 14.5.3中开发一个应用程序。我有一个网格,其中每一行都包含一个TextField和两个按钮。
我的要求是,当任何行中的TextField值更改时,所有行中的所有按钮都需要禁用。
有没有一种方法可以迭代行,从而允许我与每个按钮进行交互?
如果需要更新Grid的行,方法是调用
grid.getDataProvider().refreshAll();
它将使Grid迭代视图中的项,并重新生成它们的数据/组件。
所以在你的情况下,你会有一些类似的东西
boolean done = false; // class field
...
grid.addComponentColumn(item -> {
TextFiled field = new TextField();
field.setValue(item.getProperty()); // Populate field
field.addValueChangeListener(event -> {
item.setProperty(event.getValue());
done = true;
grid.getDataProvider().refreshAll();
});
});
grid.addComponentColumn(item -> {
Button button = new Button("Button");
button.setEnabled(!done);
return button;
});
Vaadin 14.5.3。
旁注,14.5.3是旧的。在撰写本文时,14.8.2是最新的。你应该定期更新你的框架版本,以便及时更新安全修复和错误修复。