我有一个启用了SingleSelectionModel的GWT CellTable。一旦用户点击了一行,onSelectionChange(...)会弹出我的确认对话框,询问用户是否继续。问题是当用户点击“取消”时,没有任何反应,但他无法选择相同的行(假设CellTable中只有一行)。我知道一旦用户点击“取消”,我可以清除选择,但那会再次触发SelectionChange(..)并触发我的确认对话框......这是一个无限循环。如何取消选择GWT CellTable中的一行而不触发选择更改(...)
下面是我的代码:
// 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?我接受任何解决方案。
我做一点点研究,只是想知道,如果我可以使用NoSelectionModel听SelectionChangeEvent对于这种类型的情况?但我不知道如何。 – enfany
你应该接受Thomas的答案。 – Splaktar