我希望在cellTable的一列上有一个处理程序。该列是ImageResourceCell,我希望当我点击它时,它会删除行这是我的代码
Column<MyObject, ImageResource> imageColumn =
new Column<MyObject, ImageResource>(newImageResourceCell()) {
@Override
public ImageResource getValue(MyObject object) {
return Bundle.Util.getInstance().deleteRegexButton();
}
};
cellTable.addColumn(imageColumn,SafeHtmlUtils.fromSafeConstant("<br/>");
但我不知道如何按照描述插入处理程序有可能吗??
任何建议都欢迎
谢谢。
单元格必须声明它们处理的事件,然后才能将浏览器事件传递给单元格。
ImageResourceCell myImgCell = new ImageResourceCell() {
public Set<String> getConsumedEvents() {
HashSet<String> events = new HashSet<String>();
events.add("click");
return events;
}
};
Column<MyObject, ImageResource> imageColumn = new Column<MyObject, ImageResource>(myImgCell) {
@Override
public ImageResource getValue(MyObject dataObj) {
return Bundle.Util.getInstance().deleteRegexButton();
}
@Override
public void onBrowserEvent(Context context, Element elem,
MyObject object, NativeEvent event) {
super.onBrowserEvent(context, elem, object, event);
if ("click".equals(event.getType())) {
//call your click event handler here
}
}
};
更多信息请点击此处:http://code.google.com/webtoolkit/doc/latest/DevGuideUiCustomCells.html
注意:这适用于GWT2.4,没有尝试使用GWT2.2。
您看到在GWT中将clickHandler添加到CellTable中的行吗??
CellTable内置了对处理点击事件的支持。您可以添加一个CellPreviewHandler,当单击一行时,它将被调用。它将接收事件中的许多项,如本机事件、单元格和数据行值。因为它不仅为点击事件触发,所以需要检查点击事件是否被触发。只需测试通过的事件:
boolean isClick = "click".equals(event.getNativeEvent().getType())