1

モジュールonModuleLoad()メソッドに次のコードがあります。

    List<MyPromo> promotionData = new ArrayList<MyPromo>();
    MyPromo promotion1 = new MyPromo(...);
    promotionData.add(promotion1);

    PromotionTable<MyPromo> promoTable = new PromotionTable<MyPromo>(tableColumns, promotionData);

public class PromotionTable <T extends Promotion> extends CellTable<T>{

    public PromotionTable(List<ColumnGroup<T>> columns, List<T> data) {
        super();
        this.setWidth("100%");
        this.setHeight("500px");

        this.setHeaderBuilder(new PromotionTableHeaderBuilder(columns, this));
        this.setFooterBuilder(new PromotionTableFooterBuilder(this));

        ListDataProvider<T> dataProvider = new ListDataProvider<T>();
        dataProvider.setList(data);
        dataProvider.addDataDisplay(this);
    }
    ...

の列はCellTable、オブジェクトからプロパティを取得し、表示する値をMyPromo返します。Stringただし、テーブルには何も表示されず、列ヘッダーのみが表示されます。これがなぜなのか、何か考えはありますか?

4

3 に答える 3

1

問題は次のコードにあります

    ListDataProvider<T> dataProvider = new ListDataProvider<T>();
    dataProvider.setList(data);
    dataProvider.addDataDisplay(this);

setListを実行するときまでに、ListDataProviderはそのコンシューマー、つまりディスプレイを認識している必要があります(setListの実装を参照)。

したがって、コードの順序が間違っています。最初にaddDataDisplayを実行し、次にsetListを実行します。それが動作します。

于 2013-02-21T03:54:37.610 に答える
0

dataProviderを構築し、コンストラクターのセルテーブル(またはのmu拡張)に割り当てていました。どういうわけかこれが気に入らなかったので、私がそれを移動したとき、それはうまくいきました。

于 2013-02-20T17:12:24.673 に答える
0

CellTable、SimplePager、ListDataProviderの簡単な例を次に示します。

    CellTable<AlarmDisplayBTO> cellTable= new CellTable<AlarmDisplayBTO>();
    TextColumn<AlarmDisplayBTO> dateColumn = new TextColumn<AlarmDisplayBTO>() {
        @Override
        public String getValue(AlarmDisplayBTO object) {
            return object.getDate();
        }
    };
    cellTable.addColumn(dateColumn, "Date");
    TextColumn<AlarmDisplayBTO> alarmNameColumn = new TextColumn<AlarmDisplayBTO>() {
        @Override
        public String getValue(AlarmDisplayBTO object) {
            return object.getAlarmName();
        }
    };
    cellTable.addColumn(alarmNameColumn, "Alarm Name");

    cellTable.setRowCount(alarmList.size());
    // alarmList is an ArrayList<AlarmDisplayBTO> rendered from RPC call
    cellTable.setRowData(0, alarmList); 
    cellTable.setEmptyTableWidget(new Label(" No Records Found"));

    ListDataProvider<AlarmDisplayBTO> dataProvider = new ListDataProvider<AlarmDisplayBTO>();
    dataProvider.addDataDisplay(cellTable);
    dataProvider.setList(alarmList);

    SimplePager pager = new SimplePager();
    pager.setDisplay(cellTable);
    pager.setPageSize(20); // 20 rows will be shown at a time

    VerticalPanel vPanel = new VerticalPanel();
    vPanel.add(cellTable);
    vPanel.add(pager);

    setWidget(new ScrollPanel(vPanel));

これがお役に立てば幸いです。

于 2014-11-26T12:40:12.843 に答える