我有一個啓用了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