Как обрабатывать события столбца Datagrid из Presenter?
Вопрос
Я использую GWT MVP и я хотел бы обрабатывать события в столбцах Сетка данных от Ведущего.От Витрина 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);
Приведенный выше пример , этот код написан на Вид сторону, и это просто действительно пример.В качестве шаблона mvp мне просто нужно вызвать rpc-запрос для обновления базы данных.Это не может быть сделано в Вид сторону, но я понятия не имею, как установить Обновление поля от моего ведущего.Пожалуйста, помогите мне, как я могу в этом разобраться?Большое спасибо .
Решение
Есть два способа сделать это (способ MVP I или способ MVP II).:
Стиль MVP 1:
http://www.gwtproject.org/articles/mvp-architecture.html
Создать setter
на вашем View
(т.е. setFieldUpdater(FieldUpdater<ContactInfo, String>)
) для этого требуется FieldUpdater
и добавляет его в столбец.Из самого Presenter
вы можете позвонить (при условии, что view
это ссылка на ваш взгляд).
Ведущий:
view.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
// Make the RPC call
}
});
Стиль MVP2:
http://www.gwtproject.org/articles/mvp-architecture-2.html
Если у вас есть рекомендация от вашего View
вернемся к вашему Presenter
.Затем вы можете вызвать функцию на вашем компьютере. Presenter
.
Вид:
firstNameColumn.setFieldUpdater(new FieldUpdater<ContactInfo, String>() {
@Override
public void update(int index, ContactInfo object, String value) {
getPresenter().onUpdate(info,value);
}
});