这是我的问题。 我有3列的简单表(Id,no,text)Id,没有组合为每一行创建一个唯一的键。
Id - no - text 12 - 1 - my text1 12 - 2 - my text2 13 - 1 - cool 13 - 2 - cool2 13 - 3 - cool3
现在,我想将这些数据加载到一个包含4列的CellTable中(第一列是checkBoxColumn,其他3列是ID / No / Text textcolum。我还想在CheckBoxColumn的Header上放置一个SelectAllCheckBox,以便当用户点击selectAllCheckBox时,所有当前可见的复选框都被选中(原因是,单元格可以有很多页面,但它只会选择可见的那些)。
这是代码,我完成了除1之外的所有要求,即“当我点击selectAllCheckBox时,selectionModel
被选中,但相应的复选框没有被选中。
这是守则。
public static final ProvidesKey<String[]> KEY_PROVIDER = new ProvidesKey<String[]>() {
@Override
public Object getKey(String[] item) {
String[] itemArr={item[0],item[1]};
return item == null ? null : itemArr;
}
};
以下是主要的CellTable代码:
final MultiSelectionModel<String[]> selectionModel = new MultiSelectionModel<String[]>(KEY_PROVIDER);
final CellTable<String[]> cellTable = new CellTable<String[]>();
Column<String[], Boolean> checkColumn = new Column<String[], Boolean>(
new CheckboxCell(true, false)) {
@Override
public Boolean getValue(String[] object) {
// Get the value from the selection model.
String[] objectArr={object[0],object[1]};
return selectionModel.isSelected(objectArr);
}
};
cellTable.setSelectionModel(selectionModel);
CheckboxHeader selectAllCheckBoxHeader = new CheckboxHeader();
selectAllCheckBoxHeader.addValueChangeHandler(new ValueChangeHandler(){
@Override
public void onValueChange(ValueChangeEvent event) {
// TODO Auto-generated method stub
System.out.println("test");
for (String[] item : cellTable.getVisibleItems()) {
if (!selectionModel.isSelected(item)) {
System.out.println(Arrays.toString(item));
selectionModel.setSelected(item, true);
}
}
}
});
cellTable.addColumn(checkColumn, selectAllCheckBoxHeader);
当我抓住selectAll时,没有可见的checkBox被检查,但打印时
Set<String[]> selSet=selectionModel.getSelectedSet();
for(String[] s : selSet){
System.out.println("Mine: "+Arrays.toString(s));
}
它显示了当前选定的项目
假设pageSize是3,那么 输出:
Mine: [12,1,my text1] Mine: [12,2,my text2] Mine: [13,1,cool]
因此,当selectionModel
被选中时,如何使可见的复选框自动选中并且在TANDEM中被选中
注意:我也试过cellTable.setSelectionModel(selectionModel, DefaultSelectionEventManager.<String[]> createCheckboxManager());
但没有工作。
答案 0 :(得分:1)
item[]
public Object getKey(String[] item) {
return item == null ? null : item;
}
&安培;那么
public Boolean getValue(String[] object) {
return selectionModel.isSelected(object);
}
然后使用
cellTable.setSelectionModel(selectionModel, DefaultSelectionEventManager.<String[]> createCheckboxManager());
最后,它按预期工作