Как обрабатывать события столбца Datagrid из Presenter?

1

Я использую GWT MVP, и я хотел бы обрабатывать события в столбцах DataGrid из Presenter. Из GWT DataGrid ShowCase...

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

Вышеприведенный пример, этот код записывается на стороне View, и это просто пример. Как шаблон mvp, мне просто нужно вызвать запрос rpc для обновления базы данных. Это невозможно сделать в View, но я понятия не имею, как установить FieldUpdater из моего ведущего. Пожалуйста, помогите мне, как я могу понять это? Большое спасибо.

Теги:
gwt
gwt-rpc
gwt2
gwt-mvp

1 ответ

2
Лучший ответ

Это можно сделать двумя способами (MVP я или 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);
  }
});
  • 0
    Спасибо, Юмит, теперь я понял. Спасибо за MVP-архитектуру-2, я знаю только о MVP-архитектуре-1 раньше. Теперь я могу добавлять или управлять обработчиками сетки данных из докладчика. Спасибо за идеальный ответ.
  • 1
    Конечно, я бы порекомендовал использовать подход MVP-II, поскольку он делает тестирование проще и чище.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню