GWT CheckboxCell препятствует выделению в CellTable

Я обнаружил, что если у вас есть GWT CellTable и добавьте столбец, который содержит CheckboxCell, выбор через SingleSelectionModel больше не работает. Этот тип ячейки препятствует выбору строки. После примера кода, демонстрирующего это поведение в 2.5.0.rc1.

final CellTable<LicenseDto> licenseTable = new CellTable<LicenseDto>();
final SingleSelectionModel<LicenseDto> selectionModel = new SingleSelectionModel<LicenseDto>();
licenseTable.setSelectionModel(selectionModel);


//--- If I add this column, the selection does work.
Column<LicenseDto, String> workingColumn = new Column<LicenseDto, String>(new TextCell()) {

    @Override
    public String getValue(LicenseDto object) {
        return "Works";
    }
};
workingColumn.setFieldUpdater(new FieldUpdater<LicenseDto, String>() {

    @Override
    public void update(int index, LicenseDto object, String value) {
        ;
    }
});
licenseTable.addColumn(workingColumn);


//--- If I add this column, the selection does NOT work anymore.
Column<LicenseDto, Boolean> notWorkingColumn = new Column<LicenseDto, Boolean>(new CheckboxCell(true, true)) {

    @Override
    public Boolean getValue(LicenseDto object) {
        return object.getEnabled();
    }
};
notWorkingColumn.setFieldUpdater(new FieldUpdater<LicenseDto, Boolean>() {

    @Override
    public void update(int index, LicenseDto object, Boolean value) {
        presenter.enableLicense(object, value);
    }
});
licenseTable.addColumn(notWorkingColumn);

initWidget(licenseTable);

Вы можете объединить несколько ячеек и добавить их в таблицу (например, LinkActionCell так далее). Пока нет CheckboxCellсиний выбор с SingleSelectionModel работает как шарм. Кто-нибудь видит, что я делаю не так с этим CheckboxCell или есть ошибка?

1 ответ

Спасибо, Томас! Проблема заключалась в том, что я установил handlesSelection = true даже думал, что я ничего не справлюсь. Установка его в false решает проблему. Кстати, я добавляю fieldUpdater в столбец для обработки галочки или снятия флажка:

Column<LicenceDto, Boolean> enableLicenseColumn = new Column<LicenceDto, Boolean>(new CheckboxCell(false, false)) {

    @Override
    public Boolean getValue(LicenceDto object) {
        return object.getEnabled();
    }
};
enableLicenseColumn.setFieldUpdater(new FieldUpdater<LicenceDto, Boolean>() {

    @Override
    public void update(int index, LicenceDto object, Boolean value) {
        presenter.enableLicense(object, value);
    }
});

На вопрос дан ответ.

Другие вопросы по тегам