当前位置: 首页 > 面试题库 >

Vaadin-修改行后刷新网格

欧阳勇
2023-03-14
问题内容

我用数据库中的数据创建简单的网格:

BeanItemContainer<Customer> container = new BeanItemContainer<>(Customer.class, customerRepository.findAll());
Grid grid = new Grid(container);

要编辑每一行,请创建按钮:

Button edit = new Button("Edit", clickEvent -> openWindow((Customer) grid.getSelectedRows().iterator().next()));

这会打开带有编辑表单的新窗口。接受所有更改后,我必须手动刷新整个页面才能看到Grid上的修改。我的问题是:

修改任何行条目后如何只刷新Grid?以及如何将那些修改保存到数据库中(也许beanItemContainer可以做到)?


问题答案:

这是一个错误。在基础容器中进行更改后,Grid不会更新自身,也没有任何合理的刷新方法。关于这个问题有很多黑客,即

grid.clearSortOrder();

要么

grid.setEditorEnabled(true);
grid.setEditorEnabled(false);

SSCCE:

TextField text =  new TextField("Edit");
Grid grid;
BeanItemContainer<Customer> container;

@Override
protected 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();
}


 类似资料:
  • 问题内容: 我正在使用Vaadin 8.5.1网格来显示1000行。一旦使用属性的更改更新了行,我将使用 或 无法更新行。 我需要显式查看该行的更新属性。 我正在使用下面的代码片段来创建网格 欣赏是否有人可以分享有关如何解决此问题的指针 TIA 问题答案: 为了使一个项目被视为同一项目(以及刷新工作),您需要在该对象上正确实现和方法。 从文档中 公共无效refreshItem(T项目) 从接口:D

  • 我有剑道网格和自定义搜索表单。在我的搜索表单中,我有提交和重置按钮。如果有搜索内容,那么网格将使用搜索的过滤器数据源进行更新,然后单击“重置”,网格将使用新数据源进行刷新。如果我将pagesize值10更改为20并单击“重置网格”,我的问题是没有重置。。然后网格页面大小变为20到10。。。如果单击“下一页”,则第二页的页面大小保持为20,第一页的页面大小保持为10 我怎么解决这个问题?任何想法?我

  • 有没有一种方法可以在不刷新整个数据源或使用jQuery为每个单元格设置值的情况下刷新单个剑道网格行?

  • 好的,试着缩短一点,把代码放在文章的末尾。谢谢你的回答。 在阅读了很多关于这个主题的问题/答案后,没有找到任何解决方案,这是我的问题。我尽量简洁,所以我可能会截断一些代码,请随意询问细节。我对JSF、primefaces世界也很陌生。 我基于Spring/Hibernate/Primefaces在现有web应用程序上开发改进/修复。用户界面包含一个选项卡视图,其中包含一些p:datatable:c

  • 我使用Telerik的演示页面上显示的编辑网格。编辑网格后,我希望网格刷新。编辑网格后,网格是否有调用的任何事件? 我试图使用数据绑定事件。在本例中,我读取数据源,但它告诉我刷新网格是一个无限循环。我试图使用saveChanges事件,但它不起作用。