【发布时间】:2023-12-30 11:20:01
【问题描述】:
我有一个我使用的 Vaadin 网格。我提出了一个 put 请求来更新网格中元素的分数。我想知道如何让网格在更新后做出响应以显示新信息。现在我必须刷新整个页面以显示新信息。
我不确定我会发布什么代码,如果有帮助的话,我正在使用基本的 vaadin 网格。
【问题讨论】:
我有一个我使用的 Vaadin 网格。我提出了一个 put 请求来更新网格中元素的分数。我想知道如何让网格在更新后做出响应以显示新信息。现在我必须刷新整个页面以显示新信息。
我不确定我会发布什么代码,如果有帮助的话,我正在使用基本的 vaadin 网格。
【问题讨论】:
我不完全确定您对网格进行更改是什么意思,但我想您使用的是 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()
【讨论】: