Как обновить vaadin Grid после того, как вы что-то изменили?
У меня есть сетка Ваадина, которую я использую. Я делаю запрос пут, чтобы обновить оценки элементов в сетке. Мне было интересно, как заставить сетку реагировать после обновления, чтобы показать новую информацию. Прямо сейчас я должен обновить всю страницу, чтобы показать новую информацию.
Я не уверен, какой код я бы опубликовал, я использую базовую сетку 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()