Question

I have the following code in my modules onModuleLoad() method:

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

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

and

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);
    }
    ...

The columns for the CellTable just take properties off the MyPromo object and return a String value to display. However, nothing is displayed in the table, just the column headers. Any idea why this is?

Was it helpful?

Solution 2

I was constructing the dataProvider and assigning it to the celltable (or mu extension of) in the constructor. It didn't like this for some reason, when I moved it out it worked.

OTHER TIPS

The problem is with the following code

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

By the time you do setList, ListDataProvider must know its consumers ie displays (Refer setList implementaion).

So, the order of the code is wrong. First do addDataDisplay and then do setList. It will work.

Here is a simple example of CellTable, SimplePager and 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));

Hope this may help..

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top