1

こんにちは私はGWTに不慣れで、GWTPにも不慣れです。

私はCellTablesで遊んでみましたが、developers.google.com / web-toolkit / doc / 2.4 / DevGuideUiCellWidgets#celltableにあるGWTのドキュメントに従って、簡単なものを作成することから始めることにしました。

まず、View.ui.xmlファイルにCelltableを作成しました。

xmlns:c="urn:import:com.google.gwt.user.cellview.client">
<g:HTMLPanel>
     <c:CellTable pageSize='15' ui:field='cellTable' />
</g:HTMLPanel>

次に、連絡先クラスを作成しました。

public class Contact {
    private final String address;
    private final String name;

    public Contact(String name, String address) {
      this.name = name;
      this.address = address;
    }

    public String getAddress() {
        return address;
    }

    public String getName() {
        return name;
    }
}

私のView.javaファイル:

@UiField(provided=true) CellTable<Contact> cellTable = new CellTable<Contact>();

public CellTable<Contact> getCellTable() {
     return cellTable;
}

最後に私のPresenter.javaファイルで:

public interface MyView extends View {
   CellTable<Contact> getCellTable();
}

@Override
protected void onReset() {
    super.onReset();

    // Create name column.
    TextColumn<Contact> nameColumn = new TextColumn<Contact>() {
          @Override
          public String getValue(Contact contact) {
            return contact.getName();
          }
        };

    // Create address column.
   TextColumn<Contact> addressColumn = new TextColumn<Contact>() {
          @Override
          public String getValue(Contact contact) {
            return contact.getAddress();
          }
        };

    // Add the columns.
    getView().getCellTable().addColumn(nameColumn, "Name");
    getView().getCellTable().addColumn(addressColumn, "Address");

    // Set the total row count. 
    getView().getCellTable().setRowCount(CONTACTS.size(), true);

    // Push the data into the widget.
    getView().getCellTable().setRowData(0, CONTACTS);
}

すべてが良さそうですが、このコードを試してもCellTableが表示されません...エラーは発生しません...

よろしくお願いします!

4

1 に答える 1

0

CellTable に DataProvider を使用していないか、登録していないようです。GWT CellWidgets は、DataProvider/DISplay パターンに基づいています。したがって、CellTable は DataProvider の単なる表示です。1 つの DataProvider が複数のディスプレイを持つことができます。

次のように書く必要はありません。

// Set the total row count. 
getView().getCellTable().setRowCount(CONTACTS.size(), true);

// Push the data into the widget.
getView().getCellTable().setRowData(0, CONTACTS);

CellTable を DataProvider (ListDataProvider など) の Display として登録し、DataProvider を新しいデータで更新するときに refresh メソッドを呼び出す必要があります。

于 2012-10-04T22:05:49.680 に答える