2

Google Web Toolkit で CellTable を作成しました。私はそれを使い始めたばかりで、それについての私の知識は非常に少ないです...しかし、CellTableヘッダーにチェックボックスを作成する方法のチュートリアルまたはコード例を探していましたが、私が見つけたすべてが理解できなかったり、うまくいきませんでした。

これまでのところ、CellTable の Google チュートリアルとほとんど同じように、チェックボックス用の列と通常のテーブルを作成するためのこのコードを取得しました。

Column<Contact, Boolean> checkColumn = new Column<Contact, Boolean>(
new CheckboxCell(true, false)) {

@Override
public Boolean getValue(Contact contact) {
    return null;
}

};

table.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
table.setColumnWidth(checkColumn, 40, Unit.PX);

現在、ヘッダーにチェックボックスを追加するコードと、すべてのチェックボックスをチェックまたはチェック解除する方法を探しています。

御時間ありがとうございます。

4

2 に答える 2

4

私のブログ投稿から:

これは、テーブル内のすべての行を選択/選択解除する単純な列ヘッダーです。すべての行がチェックされると、ヘッダーは自動的にチェックされます。ヘッダーのチェックボックスをクリックすると、すべての行が選択または選択解除されます。

選択

選択モデルとデータ リスト プロバイダーを使用して選択マジックを実行しています。誰にとってもうまくいくとは限りません。

そして、ここに私のカスタムヘッダーがあります:

public final class CheckboxHeader extends Header {

    private final MultiSelectionModel selectionModel;
    private final ListDataProvider provider;

    public CheckboxHeader(MultiSelectionModel selectionModel,
            ListDataProvider provider) {
        super(new CheckboxCell());
        this.selectionModel = selectionModel;
        this.provider = provider;
    }

    @Override
    public Boolean getValue() {
        boolean allItemsSelected = selectionModel.getSelectedSet().size() == provider
                .getList().size();
        return allItemsSelected;
    }

    @Override
    public void onBrowserEvent(Context context, Element elem, NativeEvent event) {
        InputElement input = elem.getFirstChild().cast();
        Boolean isChecked = input.isChecked();
        for (TYPE element : provider.getList()) {
            selectionModel.setSelected(element, isChecked);
        }
    }

}
于 2012-07-17T19:43:17.900 に答える
3

http://code.google.com/p/google-web-toolkit/issues/detail?id=7014を参照してください。

于 2012-07-17T09:52:42.713 に答える