请帮我解决这个问题。 我在下面有这个代码,我实际上想要将图像插入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)
答案 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
}
}
}
});