- http://stackoverflow.com/questions/18951897/gwt-imagecell-change-image-dynamically-in-a-datagrid-or-celltable
- http://stackoverflow.com/questions/4691801/how-can-i-render-a-clickabletextcell-as-an-anchor-in-a-gwt-celltable
- http://www.gwtproject.org/doc/latest/DevGuideUiCustomCells.html#cell-onBrowserEvent
I tried to use anchor but unsuccessful. The cell grid only render text & image but not the event.
I found a solution using ImageCell.
Steps :
1. Set columnconfig
2. Declare ImageCell object
3. override render subroutine
4. Override getConsumedEvents - to expose click event
5.Override onBrowserEvent to handle the event
In this example, it's only handle the first child element, so I just group the image & link in a div.
ColumnConfig<PremiseBean, String> prm_nameColumn = new ColumnConfig<PremiseBean, String>(props.prm_name(), 150, "Name");
ImageCell ic = new ImageCell() {
@Override
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
sb.appendHtmlConstant("<div class=\"myClickableCellTestStyle\" style='cursor: pointer'/>");
sb.appendHtmlConstant("<img src='images/icons/add.png' style='cursor: pointer'/> ");
sb.append(SafeHtmlUtils.fromTrustedString(value));
sb.appendHtmlConstant("</div>");
}
@Override
public Set<String> getConsumedEvents() {
Set<String> events = new HashSet<String>();
events.add("click");
return events;
}
@Override
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context context, Element parent, String value, NativeEvent event, ValueUpdater<String> valueUpdater) {
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if (parent.getFirstChildElement().isOrHasChild(Element.as(event.getEventTarget()))) {
Console.writeLine("OnEvent");
Info.display("Test", value);
}
}
};
prm_nameColumn.setCell(ic);
add style to css.
.myClickableCellTestStyle{
text-decoration:underline;
}
0 comments:
Post a Comment