Mam GWT 2.4 DataGrid skojarzone z SingleSelectionModel. Jedna z kolumn w siatce to CheckboxCell, ale nie jest używana do selekcji, ale do ustawiania wartości pola boolowskiego dla bazowego typu elementu wiersza. Mój problem polega na tym, że kiedy klikam na pole wyboru, wiersz jest wybierany jako pierwszy, następnie muszę kliknąć drugi raz, aby ustawić/anulować zaznaczenie pola wyboru. Wolałbym, aby kliknięcie pola wyboru pod numerem powodowało wybór wiersza, natomiast kliknięcie przycisku w polu wyboru tylko ustawia/wyłącza pole wyboru. Czy ktoś może wskazać mi właściwy kierunek postępowania? Wciąż wracam do onBrowserEvent, ale nie jestem pewien, co wypróbować.Komórki pola wyboru i wiersze tabeli wyboru do wybrania
6
A
Odpowiedz
6
Istnieje kilka podejść, które możesz zrobić, w zależności od tego, co dokładnie chcesz zrobić. Oto dwa pomysły, które przychodzą na myśl:
- Użyj DefaultSelectionEventManager.CheckboxEventTranslator do czarnej kolumnie
- Intercept go na komórce przez podstawie komórki z CellPreviewEvent.Handler i obsługiwać go na poziomie DOM zaznaczając eventtarget (
"click".equals(event.getType())
) a następnie użyjevent.stopPropogation()
, gdy EventTarget jest typu wejściowego "checkbox"
0
Ten kod rozwiązał w moim przypadku problem bardzo podobny do twojego.
Column<SomeBean, Boolean> checkboxColumn= new Column<SomeBean, Boolean>(new CheckboxCell(true,false))
{
@Override
public Boolean getValue(SomeBean object)
{
if(object == null || object.getId() == null)
return null;
return selectionModel.isSelected(object);
}
};
Wypróbuję to w poniedziałek, kiedy wrócę do pracy. Dzięki. –
Czytanie dokumentacji, wydaje się, że SelectionEventManager ma wszystkie narzędzia potrzebne do obsługi tego i innych problemów, które mam. Twoje zdrowie! –