首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT CellTable以编程方式选择CheckBoxCell

问GWT CellTable以编程方式选择CheckBoxCell
EN

Stack Overflow用户
提问于 2011-05-30 17:47:23
回答 2查看 19.2K关注 0票数 5

我有一个包含CheckBoxCell列的cellTable。我正在尝试做的是在单元格表之外有一组按钮,让用户自动选中/取消选中一组不同的元素(例如,全部选中/全部取消选中,但我希望有更复杂的规则)。

我不理解的是如何访问元素(我想是通过行/列值?)并获取/设置该值。

有没有人能帮我解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-30 23:09:56

假设您想要的是将checkbox绑定到"selection“并轻松地以编程方式选择一大堆项(微妙:选择项,这将导致复选框被选中,而不是复选框被选中),您将使用MultiSelectionModel。

您可以在http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTable中找到示例代码,即:

代码语言:javascript
复制
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);

然后,要选择一个项目(并自动选中其复选框),您只需执行以下操作:

代码语言:javascript
复制
selectionModel.setSelected(item, true);

同样,您可以使用selectionModel.getSelectedSet()获取所有选定项的集合。

票数 15
EN

Stack Overflow用户

发布于 2011-05-30 21:52:15

我不知道您是如何设置cellTable的,但我想您有一个链接到它的dataProvider。ListDataProvider或AsyncDataProvider。您希望修改提供程序中的数据以更改行的状态。

下面是一个简单的全选/取消全选示例,假设您有一个带有cellTable和复选框的uiBinder:

代码语言:javascript
复制
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());
    }
  }

}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6174689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档