質問

gwt mvp を使用しています。列のイベントを処理したいです。 DataGrid 発表者から。 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);
.

上記の例では、このコードは 側とそれを書き込みます。本当に例です。 MVPパターンとして、データベースを更新するようにRPC要求を呼び出す必要があります。これは、 側面ではできませんが、わかりません。 fieldupdater をプレゼンターからどうやってそれを理解することができますか?大いにありがとう。

役に立ちましたか?

解決

これを行うには2つの方法があります(MVP IまたはMVP IIウェイ):

MVP 1スタイル:

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

setterを撮影して列に追加するViewsetFieldUpdater(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