0

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

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

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

下面是我编码的 ImageResource Cell,但它没有响应点击。

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)
4

2 回答 2

1

以同样的方式,您通过为单元格表扩展 AbstractCell 来使用自定义单元格,您将扩展 ClickableTextCell (看看这个答案)。但是当你在你的单元格中使用图像时,它变得很棘手。本教程对我们有用

于 2013-08-22T09:28:41.473 回答
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
            }
        }
    }

});
于 2016-07-11T20:44:20.043 回答