2013-05-15 2 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, и все еще проблема есть.

Примечание: Вышеупомянутая идея работает без этого 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

Поскольку onBrowserEvent обжигают всякий раз, когда событие браузер получил .. когда Window.alert метод, называемый затем начеку фокус дисплей переходит в предупредительного окно, родительское окно создает выгрузить 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

Смежные вопросы