Question

Je suis à l'aide de GWT MVP et je voudrais gérer les événements dans les colonnes de DataGrid à partir de Presenter.À partir de GWT DataGrid Vitrine ...

    // 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);

L'exemple ci-dessus , ce code est écrit dans Vue côté et qu'il est juste vraiment l'exemple.En tant que modèle mvp , j'ai juste besoin de faire appel rpc demande de mise à jour de la base de données.Cela ne peut être fait dans Vue côté, mais j'ai aucune idée de comment régler FieldUpdater de mon présentateur.S'il vous plaît aider moi comment puis-je le savoir ?Merci beaucoup .

Était-ce utile?

La solution

Il y a deux façons de le faire (MVP I ou MVP II moyen):

MVP 1 style:

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

Créer un setter sur votre View (c'est à dire setFieldUpdater(FieldUpdater<ContactInfo, String>)) qui prend un FieldUpdater et l'ajoute à la colonne.À partir de la Presenter vous pouvez appeler (à condition que view est la référence de votre point de Vue).

Présentateur:

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

MVP2 style:

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

Si vous avez une référence à partir de votre View de retour à votre Presenter.Ensuite, vous pouvez appeler une fonction sur votre Presenter.

Vue:

firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
  @Override
  public void update(int index, ContactInfo object, String value) {
    getPresenter().onUpdate(info,value);
  }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top