Comment gérer colonne de grille de données des événements de Présentateur?
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 .
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);
}
});