10 Stimmen

Wie man Clickhandler auf ImageCell in GWT CellTable hinzufügen?

Ich habe es versucht, aber es hat nicht funktioniert.

Column<ContactInfo, String> imageColumn = new Column<ContactInfo, String>(new ImageCell()) {
       @Override
       public String getValue(ContactInfo object) {
           return "contact.jpg";
          }
        };
        imageColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {

        @Override
        public void update(int index, ContactInfo object, String value) {
        Window.alert("You clicked " + object.firstName);
        }

    });
cellTable.addColumn(imageColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));

0 Stimmen

Ich habe Arbeit um ist ButtonCell anstelle von Bild Zelle dann änderte ich den Stil der Schaltfläche und aber Hintergrundbild zu ihm. es funktioniert gut sagen jetzt.

1voto

agelbess Punkte 4091

Ich habe alle oben genannten Informationen erhalten und sie in meine App aufgenommen. Danke an alle. stackoverflow rockt!

    ButtonCell bc = new ButtonCell() {
        @Override
        public void render(Context context, SafeHtml data, SafeHtmlBuilder sb) {
            if (data != null) {
                ImageResource icon = Connector.imageResources.minus();
                Image image = new Image(icon);
                //fix the mouse pointer
                image.getElement().getStyle().setCursor(Cursor.POINTER);
                //Do something with the DATA
                image.setTitle("Delete " + data.asString());
                SafeHtml html = SafeHtmlUtils.fromTrustedString(image.toString());
                sb.append(html);
            }
        }
    };
    Column<InstanceProperty, String> imageColumn = new Column<InstanceProperty, String>(bc) {
        @Override
        public String getValue(InstanceProperty object) {
            //return the DATA
            return object.getKey();
        }
    };
    imageColumn.setFieldUpdater(new FieldUpdater<InstanceProperty, String>() {
        @Override
        public void update(int index, InstanceProperty property,
                String value) {
            //you can also use the DATA to do something
            InstancePropertiesTable.this.dataProvider.getList().remove(index);
        }
    });
    addColumn(imageColumn, "");

0voto

foamroll Punkte 702

Das hat bei mir funktioniert:

public class ButtonImageCell extends ButtonCell{
    @Override
    public void render(com.google.gwt.cell.client.Cell.Context context, 
        String renderedHtmlStr, SafeHtmlBuilder sb) {
        sb.appendHtmlConstant(renderedHtmlStr);
    }
}

In einer Klasse, die CellTable table :

TableResources resources = GWT.create(TableResources.class);
ImageResourceRenderer imageRenderer = new ImageResourceRenderer();

...

Column<MyRecord, String> buttonCol = new Column<MyRecord, String>(new ButtonImageCell()) {
    @Override
    public String getValue(MyRecord record) {
        if(record.isOn())
            return imageRenderer.render(resources.getOnImg()).asString();
        else
            return imageRenderer.render(resources.getOffImg()).asString();
    }
};

buttonCol.setFieldUpdater(new FieldUpdater<MyRecord, String>() {
    public void update(int index, MyRecordobject, String value) {
        if (Window.confirm("Do stuff?")) {
            //todo: stuff
        }
    }
});

...

table.addColumn(buttonCol, "");

Wo die ImageResource kommt von ( resources ) :

public interface TableResources extends CellTable.Resources {

    interface TableStyle extends CellTable.Style {
    }

    @Source("/images/on.png")
    ImageResource getOnImg();

    @Source("/images/off.png")
    ImageResource getOffImg();
}

-1voto

Amey Punkte 2214

Sie müssen sinkEvents() mit entsprechenden Bits versehen.

Siehe die Antwort auf die Frage Hinzufügen von ClickHandler zu div, die viele andere Widget enthält .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X