GWT CellTable以编程方式选择CheckBoxCell

问题描述

| 我有一个带有CheckBoxCell列的cellTable。我正在尝试做的是在单元格表外部设置一组按钮,这些按钮使用户可以自动选中/取消选中另一组元素(例如选中全部/取消选中所有元素,但是我想拥有更多按钮)复杂的规则)。 我不明白的是如何访问元素(我想通过行/列值???)并获取/设置值。 谁能帮助我找出解决方法?     

解决方法

        假设您想要将复选框绑定到“选择”,并以编程方式轻松地选择一堆项目(精巧:选择项目,这将导致复选框被选中,而不是复选框),您将使用“ 0” 。 您可以在http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTable中找到示例代码,即:
final MultiSelectionModel<ContactInfo> selectionModel = new MultiSelectionModel<ContactInfo>(
    ContactDatabase.ContactInfo.KEY_PROVIDER);
cellTable.setSelectionModel(selectionModel,DefaultSelectionEventManager.<ContactInfo> createCheckboxManager());
…
Column<ContactInfo,Boolean> checkColumn = new Column<ContactInfo,Boolean>(
    new CheckboxCell(true,false)) {
  @Override
  public Boolean getValue(ContactInfo object) {
    // Get the value from the selection model.
    return selectionModel.isSelected(object);
  }
};
cellTable.addColumn(checkColumn,SafeHtmlUtils.fromSafeConstant(\"<br/>\"));
cellTable.setColumnWidth(checkColumn,40,Unit.PX);
然后,要选择一个项目(并自动选中其复选框),只需执行以下操作:
selectionModel.setSelected(item,true);
并且您可以类似地用
selectionModel.getSelectedSet()
获得所有选定项的集合。     ,        我不知道您如何设置cellTable,但我想您有一个链接到它的dataProvider。 ListDataProvider或AsyncDataProvider。您想要修改提供程序中的数据以更改行的状态。 这是一个全选/取消全选的简单示例,假设您有一个带有cellTable和checkbox的uiBinder:
public class MyView extends Composite {

  private class MyTableRow {
    private boolean checked;

    public boolean isChecked() {
        return this.checked;
    }

    public void setChecked(boolean checked) {
        this.checked = checked;
    }

  }

  interface MyViewUiBinder extends UiBinder<Widget,MyView> {
  }

  private static MyViewUiBinder uiBinder = GWT.create(MyViewUiBinder.class);
  private ListDataProvider<MyTableRow> provider = new ListDataProvider<MyTableRow>();
  @UiField(provided = true)
  CellTable<MyTableRow> table;

  public MyView() {
    this.table = new CellTable<MyTableRow>();
    Column<MyTableRow,Boolean> checkBoxColumn = new Column<MyTableRow,Boolean>(new CheckboxCell()) {

        @Override
        public Boolean getValue(MyTableRow object) {
            return object.isChecked();
        }

    };
    this.table.addColumn(checkBoxColumn);
    this.initWidget(uiBinder.createAndBindUi(this));
  }

  @UiHandler(\"selectAllBox\")
  public void onSelectAllClicked(ClickEvent e) {
    for (MyTableRow row : this.provider.getList()) {
        row.setChecked(((CheckBox)e.getSource()).getValue());
    }
  }

}
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...