2013-08-22 59 views
0

請幫我解決這個問題。 我有下面的代碼,我其實想插入一個圖像到一個GWT數據網格,並添加一個點擊處理程序的圖像。但它沒有響應點擊,請問您認爲可能是什麼問題? 這是資源接口如何將點擊處理程序添加到GWT ImageResource單元格?

public interface Resources extends ClientBundle { 
    @Source("delete.png") 
     ImageResource getDeleteImage(); 

    @Source("edit.png") 
     ImageResource getEditImage(); 
} 

下面是我編寫的ImageResource細胞,但它不響應點擊。

DataGrid<AccountDTO> dataGrid = new DataGrid<AccountDTO>(); 

Column<AccountDTO, ImageResource>delete = new Column<AccountDTO, ImageResource>(new ImageResourceCell()) { 

     @Override 
      public ImageResource getValue(AccountDTO object) { 
       return resources.getDeleteImage(); 
      } 
      }; 

     delete.setFieldUpdater(new FieldUpdater<AccountDTO, ImageResource>() { 

      @Override 
      public void update(int arg0, AccountDTO object, ImageResource resource) { 

       Window.alert(object.getId() + "" + object.getChargeAccount()); 
       dataProvider.getList().remove(object); 
       dataProvider.refresh(); 
       dataGrid.redraw(); 

} 
dataGrid.addColumn(delete, ""); 
dataGrid.setColumnWidth(delete, 3.0, Unit.EM) 

回答

1

這是一個老問題,但有一個比其他答案中建議的方法簡單得多的解決方案。

datagrid.addCellPreviewHandler(new Handler<AccountDTO>() { 

    @Override 
    public void onCellPreview(CellPreviewEvent<AccountDTO> event) { 
     if ("click".equals(event.getNativeEvent().getType())) { 
      if (event.getColumn() == datagrid.getColumnIndex(myImageColumn)) { 
       AccountDTO account = event.getValue(); 
       // Do what you need with a click 
      } 
     } 
    } 

}); 
相關問題