Kotak centang GWT Header untuk mencentang/menghapus centang semua kotak centang di tabel saya

Saya telah membuat CellTable dengan Google Web Toolkit. Saya baru mulai menggunakannya dan pengetahuan saya tentangnya sangat kecil... Namun saya sedang mencari tutorial atau hanya contoh kode tentang cara membuat kotak centang di header CellTable tetapi semua yang saya temukan saya tidak mengerti atau itu tidak berhasil.

Sejauh ini saya punya kode ini untuk membuat Kolom untuk kotak centang dan tabel normal sebagian besar sama dengan tutorial Google untuk CellTable:

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);

Sekarang saya sedang mencari kode untuk menambahkan kotak centang ke header dan cara membuatnya mencentang atau menghapus centang semua kotak centang.

Terima kasih atas waktunya.


person Erasio    schedule 17.07.2012    source sumber


Jawaban (2)


Dari postingan blog saya:

Berikut adalah tajuk kolom sederhana yang memilih/membatalkan pilihan semua baris dalam tabel. Ketika semua baris dicentang, header akan dicentang secara otomatis. Mengklik kotak centang di header menyebabkan memilih atau membatalkan pilihan semua baris.

pilihan

Saya menggunakan model seleksi dan penyedia daftar data untuk melakukan keajaiban seleksi. Ini mungkin tidak berhasil untuk semua orang.

Dan inilah tajuk khusus saya:

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);
        }
    }

}
person Papick G. Taboada    schedule 17.07.2012
comment
Datatable yang dibuat adalah SelectionModel<? super TYPE> sedangkan header kotak centang adalah model multiseleksi. Bagaimana cara menggabungkan hal yang sama? - person tinker_fairy; 17.06.2016