Pregunta

estoy usando Jugador Más Valioso de GWT y me gustaría manejar eventos en columnas de Cuadrícula de datos del presentador.De Caso de exhibición de 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);

En el ejemplo anterior, este código está escrito en Vista lado y es realmente un ejemplo.Como patrón mvp, solo necesito llamar a la solicitud rpc para actualizar la base de datos.Esto no se puede hacer en Vista lado pero no tengo idea de cómo configurar Actualizador de campo de mi presentador.Por favor ayúdenme ¿cómo puedo resolverlo?Muchas gracias.

¿Fue útil?

Solución

Hay dos formas de hacer esto (forma MVP I o MVP II):

Estilo MVP 1:

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

Crear un setter en tu View (es decir. setFieldUpdater(FieldUpdater<ContactInfo, String>)) que requiere un FieldUpdater y lo agrega a la columna.Desde el Presenter puedes llamar (siempre que view es la referencia a su Vista).

Presentador:

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

Estilo MVP2:

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

Si tienes una referencia de tu View volver a tu Presenter.Entonces puedes llamar a una función en tu Presenter.

Vista:

firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
  @Override
  public void update(int index, ContactInfo object, String value) {
    getPresenter().onUpdate(info,value);
  }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top