2013-05-15 46 views
0

我已經在celltable構造Celltable onBrowserEvent不獲取稱爲

public ViewSubscriptionsCellTable(CellTableResource resource, final WidgetListener clickListener) { 
     super(15, resource); 
     this.resource = resource; 
     setStyleName(CSS.LISTDATATABLE); 
     setPageStart(0); 
     expandedRows = new HashSet<String>(); 
     selectionModel = new SingleSelectionModel<ViewSubscriptionsWrapper>(); 
     setSelectionModel(selectionModel); 
     selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler(){ 
      @Override 
      public void onSelectionChange(SelectionChangeEvent event) { 
       Window.alert("clicked"); 
      } 
     }); 
     List<ViewSubscriptionsWrapper> viewSubscriptionsWrapperList = new ArrayList<ViewSubscriptionsWrapper>(); 
     setTableBuilder(new CustomTableBuilder()); 
     createColumns(clickListener); 
     listDataProvider = new ListDataProvider<ViewSubscriptionsWrapper>(new ArrayList<ViewSubscriptionsWrapper>()); 
     listDataProvider.addDataDisplay(ViewSubscriptionsCellTable.this); 
     createSortHandler(); 
     pager = new PagerWidget(TextLocation.CENTER); 
     pager.setStyleName(CSS.WIDGET_TEXT_FONT); 
     pager.setDisplay(ViewSubscriptionsCellTable.this); 
     this.setColumnWidth(radioColumn, 5.0, Unit.PCT); 
     this.setColumnWidth(msisdnColumn, 5.0, Unit.PCT); 
     this.setColumnWidth(subscriptionColumn, 10.0, Unit.PCT); 
     this.setColumnWidth(simTypeColumn, 10.0, Unit.PCT); 
     this.setColumnWidth(simNumberColumn, 70.0, Unit.PCT); 
    } 

當選擇了自定義無線電小區

@Override 
public void onBrowserEvent(Context context, Element elem, ViewSubscriptionsWrapper object, NativeEvent event) { 
super.onBrowserEvent(context, elem, object, event); 
clickListener.onWidgetEvent(new WidgetEvent(object, context.getIndex())); 

}

之後被調用的以下方法寫入下面的代碼刪除Window.alert它不再工作,單元格的onBrowserEvent是 沒有被調用。我嘗試刪除addSelectionChangeHandler,但仍然存在問題 。

注意: 如果您使用鍵在行 之間移動,然後按Enter鍵,則上述想法在沒有此addSelectionChangeHandler的情況下工作。我希望它只應用於點擊和鍵盤按下。

回答

0

我刪除了addSelectionChangeHandler並添加以下和它的工作

this.addCellPreviewHandler(new Handler<ViewSubscriptionsWrapper>() { 
      @Override 
      public void onCellPreview(CellPreviewEvent<ViewSubscriptionsWrapper> event) { 
       ViewSubscriptionsWrapper sample = event.getValue(); 
      if ("click".equals(event.getNativeEvent().getType())) { 
       clickListener.onWidgetEvent(new WidgetEvent(sample, event.getIndex())); 
      } 
      } 
     }); 
0

由於每當接收到瀏覽器事件時Window.alert方法稱爲然後警告顯示焦點轉到 警報窗口onBrowserEvent燒製..,父窗口生成卸載event.so由於觸發此事件onBrowserEvent

+0

如何觸發一個虛擬瀏覽器的事件,然後,這將有助於火onBrowserEvent或任何其他解決方案? – sujikin

+0

我不明白你所嘗試的,但如果單選按鈕是你的記錄選擇,那麼你必須使用'CheckboxCell'而不是無線電並使用'createCheckboxManager'。其他明智的火災Dom事件只是例子http://stackoverflow.com/questions/16542266/handler-on-dom-elements-in-gwt/16542675#16542675 – iMBMT

+0

單選按鈕被使用,因爲一次只能選擇一個記錄。讓我檢查一下這個鏈接。 – sujikin