给两个
CheckboxCell
的
复选框
和
复选框B
checkboxB = false
什么时候
checkboxA = false
,但此更改没有反映在ui中。
我的带复选框的桌子-
public void buildTable() {
myDataProvider.addDataDisplay(myTable);
// other columns
Column<Note, Boolean> checkboxA = new Column<Note, Boolean>(new CheckboxCell()){
@Override
public Boolean getValue(Note object) {
return object.isAChecked();
}
};
checkboxA.setFieldUpdater(new FieldUpdater<Note, Boolean>() {
@Override
public void update(int index, Note object, Boolean value) {
performCheckboxAOperation(object, value);
}
});
Column<Note, Boolean> checkboxB = new Column<Note, Boolean>(new CheckboxCell()){
@Override
public Boolean getValue(Note object) {
return object.isBChecked();
}
};
checkboxB.setFieldUpdater(new FieldUpdater<Note, Boolean>() {
@Override
public void update(int index, Note object, Boolean value) {
performCheckboxBOperation(object, value);
}
});
myTable.addColumn(checkboxA, "BOX A");
myTable.addColumn(checkboxB, "BOX B");
}
方法在数据库中存储复选框A的值,如果
checkboxA == false
,也设置
复选框B=假
在数据库中-
public void performCheckboxAOperation(Note note, Boolean bool) {
this.presenter.performBoxOperation(note, bool, new AsyncCallback<CNote>() {
@Override
public void onFailure(Throwable caught) {
// error logic
}
@Override
public void onSuccess(CompanyNote result) {
cleanupDataProvider.flush();
if (result.isAChecked() == false) {
if (result.isBChecked() == true) {
unsetB(result);
}
}
}
});
}
这是我取消设置checkboxB的方法,它正在更改db中的值,但不在ui中。-
private void unsetB(Note note) {
this.presenter.performBoxOperation(note, false, new AsyncCallback<Note>() {
@Override
public void onFailure(Throwable caught) {
// error logic
}
@Override
public void onSuccess(Note result) {
myDataProvider.flush();
myTable.redraw();
}
});
}
据我所知,
列表数据提供程序
需要刷新以使更改反映在ui中。这对于表中的所有其他字段都非常有效,但它不适用于checkboxcells。
我已经试过了
redraw()
上面可以看到的桌子,但没有任何运气。
那么,当单击一个checkboxcell时,我应该做什么来触发另一个checkboxcell中的用户界面更改呢?