【发布时间】:2021-12-23 23:11:34
【问题描述】:
我正在为 CustomField 使用 GridPro 组件。网格由 ListDataProvider 提供支持。网格初始化如下:
this.grid.addEditColumn(new ValueProvider<Item, String>() {
private static final long serialVersionUID = 1L;
@Override
public String apply(final Item source) {
return (String)source.get(prop.getName());
}
}, new TextRenderer<Item>(new ItemLabelGenerator<Item>() {
private static final long serialVersionUID = 1L;
@Override
public String apply(final Item item) {
String val = (String)item.get(prop.getName());
return StringTools.isValidString(val) ? val : "";
}
})).text(new ItemUpdater<Item, String>() {
private static final long serialVersionUID = 1L;
@Override
public void accept(final Item item, final String newValue) {
Item dataProviderItem = (Item)dataProvider.getId(item);
dataProviderItem.set(prop.getName(), newValue);
TableField.this.dataProvider.refreshItem(dataProviderItem);
}
}).setHeader(prop.getName());
我遇到的问题是,当我编辑一个单元格时,它的内容在 UI 中没有更新,它仍然显示旧值。渲染器正确返回新值,ValueProvider 也正确设置了新文本值。
【问题讨论】:
-
你的意思是当客户端提交对字段的更改(进入或点击外部)时,客户端的值恢复到原来的值?
-
是的,没错。即使渲染器正确返回了新值,客户端值(即 UI 中的单元格显示的内容)也会恢复为之前的值。
标签: vaadin vaadin-flow vaadin-grid vaadin14