Korzystam z GWT MultiSelectionModel w ramachCellTable, w którym mam pole wyboru w jednej kolumnie i widżet w drugiej kolumnie. Dodałem programy obsługi, aby zaktualizować status wyboru na podstawie kliknięć użytkownika. Jeśli użytkownik kliknie dowolną część którejkolwiek z kolumn po wybraniu komórki, status zostanie zaktualizowany poprawnie, a komórka zmieni kolor na biały z jasnoniebieskiego. Jednak jeśli użytkownik kliknie pole wyboru i komórka zostanie zaznaczona, pole wyboru zostanie odznaczone, ale komórka będzie nadal niebieska. Jeszcze bardziej dziwne: ten problem nie występuje, jeśli mam kilka punktów przerwania przed wykonaniem kodu aktualizacji statusu.
We wszystkich innych przypadkach stan komórki i stan pola wyboru są aktualizowane poprawnie. Zauważ, że nie używam interfejsu ProvidesKeys, ponieważ obiekt się nie zmienia.
Czy ktoś może mi w tym pomóc? Dzięki za pomoc.
Odpowiedzi:
1 dla odpowiedzi № 1Próbowałeś użyć a CheckBoxCell
dla kolumny pola wyboru, a w szczególności CheckboxCell(boolean dependsOnSelection, boolean handlesSelection)
konstruktor (przekazując true
do obu parametrów)?
0 dla odpowiedzi nr 2
Mam prawie ten sam problem, gdy korzystam z MultiSelectionModel. Moje obejście polega na tym, aby zobaczyć kolumnę pola wyboru jako specjalną, a następnie poradzić sobie z nią ręcznie. Powiedz:
myDataGrid.addCellPreviewHandler(
@Override
public void onCellPreview(final CellPreviewEvent<MyCellData> event){
if("click".equals(event.getNativeEvent().getType()) && 0 != event.getColumn()){
doWhatYouWant();
}
}
)