【问题标题】:How to refresh the vaadin Grid after you change something?更改某些内容后如何刷新 vaadin Grid?
【发布时间】:2023-12-30 11:20:01
【问题描述】:

我有一个我使用的 Vaadin 网格。我提出了一个 put 请求来更新网格中元素的分数。我想知道如何让网格在更新后做出响应以显示新信息。现在我必须刷新整个页面以显示新信息。

我不确定我会发布什么代码,如果有帮助的话,我正在使用基本的 vaadin 网格。

【问题讨论】:

  • 请输入一些代码,您如何发出 put 请求以更新网格中元素的分数。哪个版本的 Vaadin?
  • 类似问题here (v8)here (v7)

标签: polymer vaadin


【解决方案1】:

我不完全确定您对网格进行更改是什么意思,但我想您使用的是 setItems 或数据提供程序?

首先,你会:

Grid<MyItem> grid = new Grid(MyItem.class);
grid.setItems(someItems);

虽然你会写第二个:

Grid<MyItem> grid = new Grid(MyItem.class);
grid.setDataProvider(...);

对于第二种方式,您可以使用 Java 8 表示法指定数据提供者,如下所示:

grid.setDataProvider(
  (sortOrders, offset, limit) -> {//e.g. call to repo }, 
  () -> { // count provider, e.g. repo.count() });

或如:

grid.setDataProvider(new ListDataProvider<>(myDataCollection));

要回答这个问题,在这两种情况下,您都可以调用以下方法来获取提供者:

DataProvider<MyItem> provider = grid.getDataProvider();

为了更新一个特定的元素,数据提供者提供了方法

provider.refreshItem(item);

重要的是要知道 MyItem 类必须实现 getId() 方法,或者,equals()。如果不是这种情况,您可以调用provider.refreshAll()

【讨论】: