我有一个启用了 SingleSelectionModel 的 GWT CellTable。一旦用户单击一行,onSelectionChange(...) 就会启动我的确认对话框,询问用户是否继续。问题是当用户单击“取消”时,什么也没有发生,但他无法选择同一行(假设 CellTable 中只有 1 行)我知道一旦用户单击“取消”,我就可以清除选择,但这会再次触发 onSelectionChange(..) 并触发我的确认对话框.....这是一个无限循环。
以下是我的代码:
// Add SelectionModel to dTable;
final SingleSelectionModel<Driver> ssm = new SingleSelectionModel<Driver>();
dTable.setSelectionModel(ssm);
ssm.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@ Override
public void onSelectionChange(final SelectionChangeEvent event)
{
SC.confirm("Do you want to contact the driver?", new BooleanCallback() {
public void execute(Boolean value) {
if (value != null && value) {
final Driver d = ssm.getSelectedObject();
dataStoreService.updateDrivers(d._UUID.toString(),tripDate.getValue(), loginInfo.getEmailAddress(),destination.getText().trim(),
new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(String uuid) {
Window.alert("The driver has been notified. Please keep your reference id: "+uuid);
}
});
dataStoreService.getBookings(loginInfo.getEmailAddress(), new AsyncCallback<List<Booking>>() {
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
public void onSuccess(List<Booking> myBookings) {
ClientUtilities.populateBookings(bookingDataProvider, myBookings);
}
});
} else {
//clear selection
//ssm.setSelected(ssm.getSelectedObject(), false);
}
}
});
}
});
有人可以告诉我如何处理 CellTable 中的这种情况吗?我愿意接受任何解决方案。