Frage

ich benutze GWT MVP und ich möchte Ereignisse in Spalten von behandeln DataGrid vom Moderator.Aus GWT DataGrid ShowCase ...

    // First name.
Column<ContactInfo, String> firstNameColumn =
    new Column<ContactInfo, String>(new EditTextCell()) {
      @Override
      public String getValue(ContactInfo object) {
        return object.getFirstName();
      }
    };
firstNameColumn.setSortable(true);
sortHandler.setComparator(firstNameColumn, new Comparator<ContactInfo>() {
  @Override
  public int compare(ContactInfo o1, ContactInfo o2) {
    return o1.getFirstName().compareTo(o2.getFirstName());
  }
});
dataGrid.addColumn(firstNameColumn, constants.cwDataGridColumnFirstName());
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
  @Override
  public void update(int index, ContactInfo object, String value) {
    // Here I would like to call RPC methods
  }
});
dataGrid.setColumnWidth(firstNameColumn, 20, Unit.PCT);

Im obigen Beispiel wird dieser Code geschrieben Sicht Seite und es ist wirklich ein Beispiel.Als MVP-Muster muss ich nur die RPC-Anfrage aufrufen, um die Datenbank zu aktualisieren.Das ist nicht möglich Sicht Seite, aber ich habe keine Ahnung, wie ich das einstellen soll FieldUpdater von meinem Moderator.Bitte helfen Sie mir, wie kann ich es herausfinden?Vielen Dank.

War es hilfreich?

Lösung

Es gibt zwei Möglichkeiten, dies zu tun (MVP I- oder MVP II-Methode):

MVP 1-Stil:

http://www.gwtproject.org/articles/mvp-architecture.html

Ein ... kreieren setter auf Ihrem View (d. h. setFieldUpdater(FieldUpdater<ContactInfo, String>)), das dauert eine FieldUpdater und fügt es der Spalte hinzu.Von dem Presenter Sie können anrufen (vorausgesetzt, dass view ist der Verweis auf Ihre Ansicht).

Moderator:

view.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
  @Override
  public void update(int index, ContactInfo object, String value) {
    // Make the RPC call
  }
});

MVP2-Stil:

http://www.gwtproject.org/articles/mvp-architecture-2.html

Wenn Sie eine Referenz von Ihrem haben View zurück zu deinem Presenter.Dann können Sie eine Funktion auf Ihrem aufrufen Presenter.

Sicht:

firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
  @Override
  public void update(int index, ContactInfo object, String value) {
    getPresenter().onUpdate(info,value);
  }
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top