GWT CellTable:选中一个复选框将选中表中的每个复选框/行

时间:2019-06-14 15:43:28

标签: javascript java gwt

我现在在GWT中有一个非常基本的CellTable,并使用here所示的大部分代码。

但是,当我切换一个复选框时,每一行都会突出显示。

预览:gfycat

到目前为止,我确实尝试过:

  • Multi- / SingleSelectionMode :(我只想获得一行,所以我更喜欢SingleSelectionMode)

  • CheckBoxCell(true,true):->这正是我希望CellTable看起来的样子,但是使用这些参数,我无法使用“ getSelectedObject()”获得对象。参数的其他变体(false,false / true,false)似乎也不起作用

    CellTable<Article> ArticleCt = new CellTable<Article>(KEY_PROVIDER); 

    ListHandler<Article> sortHandler = new ListHandler<Article>(Articles);
    ArticleCt.addColumnSortHandler(sortHandler);

    final MultiSelectionModel<Article> selectionModel1 = new MultiSelectionModel<Article>(KEY_PROVIDER);

    ArticleCt.setSelectionModel(selectionModel1, DefaultSelectionEventManager.<Article> createCheckboxManager());

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

      public Boolean getValue(Article object) {

      return selectionModel1.isSelected(object);
    }
    };

我只希望选中已选中复选框的行,这样我就可以使用selectionMode.getSelectedObject()selectionMode.getSelectedSet()来获取特定的行/对象。

但是每一行都会突出显示。

1 个答案:

答案 0 :(得分:1)

您的密钥提供者KEY_PROVIDER必须在每行中提供唯一且一致的密钥。例如,每行可能都有一个“ ID”字段。

如果有多个行共享一个密钥,那么选择模型似乎与选择两者相同。如果某行的密钥不一致,则选择该行后,由于其密钥已更改,因此以后无法查询。