2013-09-29 12 views
6

Czy można odświeżyć pojedynczy wiersz komponentu vaadintable?Jak odświeżyć pojedynczy wiersz w tabeli?

Dotychczas jeśli edycji wiersz tabeli jest gotowy, ja tylko odświeżyć całą tabelę:

table.refreshRowCache();

Ale to prawdopodobnie spowoduje problemy z wydajnością później dla dużych tabelach. Jak można odświeżyć pojedynczy wiersz?

+3

Jaki jest Twój przypadek użycia? Powiązanie danych Vaadin powinno automatycznie powiadamiać tabelę o zmianach w modelu danych. W rzadkich przypadkach konieczne jest ręczne wywołanie refreshRowCache. I nie, nie ma możliwości ponownego renderowania jednego określonego wiersza w tabeli. –

+0

Przykładem użycia może być edycja pojedynczej pozycji tabeli. Co gwarantuje, że wystarczy odświeżyć ten pojedynczy wiersz, zamiast całego (może dużego) stołu. To samo dotyczy dodawania pojedynczych pozycji do tabeli. – membersound

+0

Sprawdź: http://stackoverflow.com/questions/16115437/in-vaadin-7-0-how-to-refresh-javabean-data-backing-a-table-replace-container Istnieje garść rozwiązań –

Odpowiedz

3

Znalazłem to na forum Vaadin który wydaje przydatne: https://vaadin.com/forum/#!/thread/408555/408554

jeszcze nie biorąc pod uwagę to odchodzenie ale Henri Sara (Vaadin deweloper) sugerowanej tego rozwiązania:

Property statusProperty = pqTable.getContainerProperty(itemId, "statusString"); 
if (property instanceof MethodProperty) { 
    ((MethodProperty) statusProperty).fireValueChange(); 
} 

też zauważa, że ​​metoda ta może się zmienić w przyszłych wersjach (a może zrobiłeś: S)

0

1.update Twój beanItemContainer

2. table.refreshRowCache();

Przykład:

beanItemContainer.getItem(itemId).getItemProperty("quantity").setValue(productEditor.getProduct().getQuantity()); 
table.refreshRowCache();