ช่องทำเครื่องหมาย GWT Header เพื่อเลือก / ยกเลิกการทำเครื่องหมายในช่องทั้งหมดในตารางของฉัน

ฉันได้สร้าง CellTable ด้วย Google Web Toolkit ฉันเพิ่งเริ่มใช้มันและความรู้ของฉันเกี่ยวกับมันน้อยมาก... อย่างไรก็ตาม ฉันกำลังค้นหาบทช่วยสอนหรือเพียงตัวอย่างโค้ดของวิธีสร้างช่องทำเครื่องหมายในส่วนหัวของ CellTable แต่ทุกอย่างที่ฉันพบกลับไม่เข้าใจหรือไม่เข้าใจ มันไม่ได้ผล

จนถึงตอนนี้ ฉันมีโค้ดนี้เพื่อสร้างคอลัมน์สำหรับช่องทำเครื่องหมายและตารางปกติซึ่งส่วนใหญ่จะเหมือนกับบทช่วยสอนของ Google สำหรับ 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);

ตอนนี้ฉันกำลังค้นหาโค้ดเพื่อเพิ่มช่องทำเครื่องหมายที่ส่วนหัว และวิธีทำเครื่องหมายหรือยกเลิกการทำเครื่องหมายในช่องทั้งหมด

ขอบคุณที่สละเวลา.


person Erasio    schedule 17.07.2012    source แหล่งที่มา


คำตอบ (2)


จากโพสต์ บล็อกของฉัน:

ต่อไปนี้เป็นส่วนหัวของคอลัมน์แบบธรรมดาที่เลือก/ยกเลิกการเลือกแถวทั้งหมดในตาราง เมื่อตรวจสอบทุกแถวแล้ว ส่วนหัวจะถูกตรวจสอบโดยอัตโนมัติ การคลิกช่องทำเครื่องหมายในส่วนหัวจะทำให้เลือกหรือยกเลิกการเลือกแถวทั้งหมด

การเลือก

ฉันใช้แบบจำลองการเลือกและผู้ให้บริการรายการข้อมูลเพื่อทำเวทย์มนตร์การเลือก มันอาจไม่ทำงานสำหรับทุกคน

และนี่คือส่วนหัวที่กำหนดเองของฉัน:

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 ที่สร้างขึ้นคือ SelectionModel<? super TYPE> ในขณะที่ส่วนหัวของช่องทำเครื่องหมายเป็นแบบเลือกหลายรายการ จะรวมสิ่งเดียวกันได้อย่างไร? - person tinker_fairy; 17.06.2016