我創建的GWT 頭<字符串>類上一個DataGrid 列使用的自定義實現也採用了ListHandler對此列中的數據進行排序。我試圖處理並取消瀏覽器中的事件頭類,例如,如果用戶點擊一個特定的<INPUT> 元通過這一習俗頭對象呈現,我們防止「鼠標按下」事件冒泡回直到DataGrid的事件處理程序(因爲這錯誤地觸發了列排序方法,從而阻止用戶將數據輸入<INPUT> 元素)。停車瀏覽器事件冒泡從定製的「頭」類的GWT的DataGrid/ListHandler
我能成功地分離了,我們想通過我的頭類用下面的代碼實現NativePreviewHandler「取消」,其泡沫事件:
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
final NativeEvent natEvent = event.getNativeEvent();
final Element element = natEvent.getEventTarget().cast();
final String eventType = natEvent.getType();
if ("mousedown".equals(eventType)) {
if (element.getTagName().equals("INPUT")) {
natEvent.preventDefault();
natEvent.stopPropagation();
event.cancel();
}
}
return;
}
遺憾的是沒有組合preventDefault(),stopPropagation()或event.cancel()方法成功阻止mousedown事件冒泡到父級DataGrid的處理程序。當我試圖調試這個問題時,我能夠確認,雖然DOM。 previewEvent方法成功調用DOM。 eventCancelBubble and DOM。 eventPreventDefault,DOM。 dispatchEvent方法仍然被解僱並最終觸發了DataGrid。 fireEvent和ColumnSortEvent。
任何指導/方法,以防止GWT DataGrid自動如果自定義標題的特定部分點擊將不勝感激!
如果(!ID = NULL && id.equals(COLUMN_HEADER_ID)){ 回報 ;我相信是足夠的 –