如何将单击处理程序添加到GET Image Resource单元格?

时间:2013-08-22 08:27:26

标签: gwt datagrid

请帮我解决这个问题。 我在下面有这个代码,我实际上想要将图像插入GWT数据网格并向图像添加一个点击处理程序。但它没有响应点击,请问你认为可能是什么问题? 这是资源接口

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)

2 个答案:

答案 0 :(得分:1)

以相同的方式对单元格表use a custom cell by extending AbstractCell进行扩展,可以展开可点击文本单元格(看看this answer)。但是当你在你的手机中使用图像时,它会变得棘手。 This tutorial worked for us

答案 1 :(得分:1)

This is an old question, but there is a much simpler solution than suggested in the other answer.

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
            }
        }
    }

});