Search code examples
vaadinvaadin8vaadin-grid

Refreshing Grid Data (Vaadin 8)


I have a data provider that fetches data from database and I'm keeping my data as a list.

List<Person> myList= new ArrayList<>(dao.getAllPersons());
ListDataProvider<Person> dataProvider = new ListDataProvider<>(myList);
//...
grid.setDataProvider(dataProvider);

When I delete some data from my database it doesn't refresh immediately. I have to refresh my page to see the difference.

dao.deletePerson(...);
dataProvider.refreshAll();

refreshAll() doesn't work at all. How can I refresh it?


Solution

  • Solved it.

    dataProvider.getItems().remove(item); // Removed item from list
    dao.deletePerson(...); // and removed it from my database too
    

    After that:

     dataProvider.refreshAll();
    

    EDIT:

    It's not the best solution.

    If memory consumption is an issue some day, you should switch to an own data provider (e.g. with fetch and count callback) that directly queries from the database but paged.

    @Steffen Harbich's Comment