2015-10-08 3 views
0

Я использую составную ячейку в сетке, которая имеет две кнопки. Я хочу обрабатывать события щелчка на обеих кнопках отдельно. Возможно ли это? подробно объясните, как обрабатывать эти события отдельно.Обработка композитных ячеек Обработка

Я прикрепляю свой составной код ячейки с помощью кнопок для ссылки.

private CompositeCell<FilterInfo> createCompositeCell(){ 

HasCell<FilterInfo, String> button1= new HasCell<FilterInfo, String>() { 

    public Cell<String> getCell() { 
    return new TextCell(); 
    } 

    public FieldUpdater<FilterInfo, String> getFieldUpdater() { 
    // TODO Auto-generated method stub 
    return null; 
    } 

    public String getValue(FilterInfo object) { 
    return "button 1"; 
    }}; 

    HasCell<FilterInfo, String> button2= new HasCell<FilterInfo,String>(){ 

    public Cell<String> getCell() { 
     return new ButtonCell(); 
    } 

    public FieldUpdater<FilterInfo, String> getFieldUpdater() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    public String getValue(FilterInfo object) { 
     // TODO Auto-generated method stub 
     return "button 2"; 
    } 
    }; 

    List<HasCell<FilterInfo, ?>> cells = new ArrayList<HasCell<FilterInfo, ?>>(); 
    cells.add(button1); 
    cells.add(button2); 

    CompositeCell<FilterInfo> compositeCell = new CompositeCell<FilterInfo>(cells); 

    return compositeCell; 

ответ

0

Вы обрабатываете нажмите событие в FieldUpdater каждой кнопки.

Вот минимальный рабочий пример:

package com.adam.test.client; 

import java.util.ArrayList; 
import java.util.List; 

import com.google.gwt.cell.client.ButtonCell; 
import com.google.gwt.cell.client.CompositeCell; 
import com.google.gwt.cell.client.FieldUpdater; 
import com.google.gwt.cell.client.HasCell; 
import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.user.cellview.client.CellList; 
import com.google.gwt.user.cellview.client.Column; 
import com.google.gwt.user.client.Window; 
import com.google.gwt.user.client.ui.RootPanel; 

public class Test implements EntryPoint { 

    @Override 
    public void onModuleLoad() { 
     CompositeCell<FilterInfo> compositeCell = createCompositeCell(); 
     CellList<FilterInfo> list = new CellList<FilterInfo>(compositeCell); 

     List<FilterInfo> values = new ArrayList<FilterInfo>(); 
     values.add(new FilterInfo()); 
     values.add(new FilterInfo()); 
     values.add(new FilterInfo()); 
     list.setRowData(values); 

     RootPanel.get().add(list); 
    } 

    private CompositeCell<FilterInfo> createCompositeCell() { 
     Column<FilterInfo, String> button1Column = new Column<FilterInfo, String>(new ButtonCell()) { 
      @Override 
      public String getValue(FilterInfo object) { 
       return "Button 1"; 
      } 
     }; 
     button1Column.setFieldUpdater(new FieldUpdater<FilterInfo, String>() { 
      @Override 
      public void update(int index, FilterInfo object, String value) { 
       Window.alert("Button 1 clicked!"); 
      } 
     }); 

     Column<FilterInfo, String> button2Column = new Column<FilterInfo, String>(new ButtonCell()) { 
      @Override 
      public String getValue(FilterInfo object) { 
       return "Button 2"; 
      } 
     }; 
     button2Column.setFieldUpdater(new FieldUpdater<FilterInfo, String>() { 
      @Override 
      public void update(int index, FilterInfo object, String value) { 
       Window.alert("Button 2 clicked!"); 
      } 
     }); 

     ArrayList<HasCell<FilterInfo, ?>> compositeColumns = new ArrayList<HasCell<FilterInfo, ?>>(); 
     compositeColumns.add(button1Column); 
     compositeColumns.add(button2Column); 

     return new CompositeCell<FilterInfo>(compositeColumns); 
    } 

    private class FilterInfo {} 
} 
+0

Пожалуйста, кто может привести пример кода мудр обработчиков –

+0

Я обновил код в моем ответе. Теперь это рабочий пример кода. – Adam

+0

Спасибо @ Adam.It работал –

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