1

CellTableGWTがあり、を含む列を追加すると、aCheckboxCellを介した選択が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それともバグがありますか?

4

1 に答える 1

3

トーマスありがとう!問題は、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);
    }
});

質問に答えます。

于 2013-02-15T12:05:00.720 に答える