Domanda

sto usando MVP del GWT e vorrei gestire gli eventi in colonne di DataGrid dal Presentatore.Da Vetrina GWT DataGrid ...

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

Sopra l'esempio, questo codice sta scrivendo Visualizzazione lato ed è davvero un esempio.Come modello mvp, devo solo chiamare la richiesta rpc per aggiornare il database.Questo non può essere fatto Visualizzazione side ma non ho idea di come impostarlo FieldUpdater dal mio presentatore.Per favore aiutami come posso capirlo?Grazie mille.

È stato utile?

Soluzione

Esistono due modi per farlo (modo MVP I o MVP II):

Stile MVP 1:

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

Creare un setter sul tuo View (cioè. setFieldUpdater(FieldUpdater<ContactInfo, String>)) che richiede a FieldUpdater e lo aggiunge alla colonna.Dal Presenter puoi chiamare (a condizione che view è il riferimento alla tua vista).

Presentatore:

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

Stile MVP2:

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

Se hai un riferimento dal tuo View torna al tuo Presenter.Quindi puoi chiamare una funzione sul tuo Presenter.

Visualizzazione:

firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
  @Override
  public void update(int index, ContactInfo object, String value) {
    getPresenter().onUpdate(info,value);
  }
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top