我正在使用 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方式):

MVP1风格:

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);
  }
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top