这是一个错误。在基础容器中进行更改后,Grid不会更新自身,也没有任何合理的刷新方法。关于这个问题有很多黑客,即
grid.clearSortOrder();
要么
grid.setEditorEnabled(true);grid.setEditorEnabled(false);
SSCCE:
TextField text = new TextField("Edit");Grid grid;BeanItemContainer<Customer> container;@Overrideprotected void init(VaadinRequest request) { final VerticalLayout layout = new VerticalLayout(); container = new BeanItemContainer<>(Customer.class, Arrays.asList(new Customer("1"), new Customer("2"))); grid = new Grid(container); Button open = new Button("open"); open.addClickListener(this :: openListener); Button save = new Button("save"); save.addClickListener(this :: saveListener); layout.addComponents(grid, open, save, text); setContent(layout);}private void openListener(Button.ClickEvent clickEvent){ text.setValue(((Customer) (grid.getSelectedRow())).getName());}private void saveListener(Button.ClickEvent clickEvent){ Customer c = (Customer) grid.getSelectedRow(); c.setName(text.getValue()); grid.clearSortOrder();}


