GWT CellTable数据未显示

GWT CellTable数据未显示,gwt,dataprovider,celltable,Gwt,Dataprovider,Celltable,我的模块onModuleLoad()方法中有以下代码: List promotionData=new ArrayList(); MyPromo promotion1=新的MyPromo(…); promotionData.add(promotion1); PromotionTable PromotionTable=新的PromotionTable(tableColumns,promotionData); 及 公共类升级表扩展了CellTable{ 公共升级表(列表列、列表数据){ 超级();

我的模块
onModuleLoad()
方法中有以下代码:

List promotionData=new ArrayList();
MyPromo promotion1=新的MyPromo(…);
promotionData.add(promotion1);
PromotionTable PromotionTable=新的PromotionTable(tableColumns,promotionData);

公共类升级表扩展了CellTable{
公共升级表(列表列、列表数据){
超级();
此.setWidth(“100%”);
此设置高度(“500px”);
this.setHeaderBuilder(新的PromotionTableHeaderBuilder(列,this));
this.setFooterBuilder(新的PromotionTableFooterBuilder(this));
ListDataProvider dataProvider=新ListDataProvider();
dataProvider.setList(数据);
dataProvider.addDataDisplay(此);
}
...

CellTable
的列只需从
MyPromo
对象中获取属性并返回一个
字符串
值即可显示。但是,表中没有显示任何内容,只显示列标题。知道原因吗?

我正在构造数据提供程序并将其分配给CellTable(或的mu扩展名)在构造函数中。出于某种原因,它不喜欢这样,当我将其移出时,它工作了。

我正在构造数据提供程序并将其分配给构造函数中的celltable(或的mu扩展)。出于某种原因,它不喜欢这样,当我将其移出时,它工作了。

问题在于以下代码

    ListDataProvider<T> dataProvider = new ListDataProvider<T>();
    dataProvider.setList(data);
    dataProvider.addDataDisplay(this);
ListDataProvider dataProvider=新ListDataProvider();
dataProvider.setList(数据);
dataProvider.addDataDisplay(此);
当您执行setList时,ListDataProvider必须知道其消费者ie显示(请参阅setList实现)


因此,代码的顺序是错误的。首先执行addDataDisplay,然后执行setList。它会工作。

问题在于以下代码

    ListDataProvider<T> dataProvider = new ListDataProvider<T>();
    dataProvider.setList(data);
    dataProvider.addDataDisplay(this);
ListDataProvider dataProvider=新ListDataProvider();
dataProvider.setList(数据);
dataProvider.addDataDisplay(此);
当您执行setList时,ListDataProvider必须知道其消费者ie显示(请参阅setList实现)


因此,代码的顺序是错误的。首先执行addDataDisplay,然后执行setList。它会起作用。

下面是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));
CellTable CellTable=new CellTable();
TextColumn dateColumn=新的TextColumn(){
@凌驾
公共字符串getValue(AlarmDisplayBTO对象){
返回object.getDate();
}
};
cellTable.addColumn(dateColumn,日期);
TextColumn alarmNameColumn=新建TextColumn(){
@凌驾
公共字符串getValue(AlarmDisplayBTO对象){
返回object.getAlarmName();
}
};
cellTable.addColumn(alarmNameColumn,“报警名称”);
cellTable.setRowCount(alarmList.size());
//alarmList是从RPC调用呈现的ArrayList
cellTable.setRowData(0,报警列表);
setEmptyTableWidget(新标签(“未找到记录”);
ListDataProvider dataProvider=新ListDataProvider();
dataProvider.addDataDisplay(cellTable);
dataProvider.setList(报警列表);
SimplePager pager=新SimplePager();
寻呼机设置显示(手机台);
setPageSize(20);//一次将显示20行
VerticalPanel vPanel=新的VerticalPanel();
vPanel.add(cellTable);
vPanel.add(寻呼机);
setWidget(新滚动面板(vPanel));

希望这会有所帮助。

这里是CellTable、SimplePage和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));
CellTable CellTable=new CellTable();
TextColumn dateColumn=新的TextColumn(){
@凌驾
公共字符串getValue(AlarmDisplayBTO对象){
返回object.getDate();
}
};
cellTable.addColumn(dateColumn,日期);
TextColumn alarmNameColumn=新建TextColumn(){
@凌驾
公共字符串getValue(AlarmDisplayBTO对象){
返回object.getAlarmName();
}
};
cellTable.addColumn(alarmNameColumn,“报警名称”);
cellTable.setRowCount(alarmList.size());
//alarmList是从RPC调用呈现的ArrayList
cellTable.setRowData(0,报警列表);
setEmptyTableWidget(新标签(“未找到记录”);
ListDataProvider dataProvider=新ListDataProvider();
dataProvider.addDataDisplay(cellTable);
dataProvider.setList(报警列表);
SimplePager pager=新SimplePager();
寻呼机设置显示(手机台);
setPageSize(20);//一次将显示20行
VerticalPanel vPanel=新的VerticalPanel();
vPanel.add(cellTable);
vPanel.add(寻呼机);
setWidget(新滚动面板(vPanel));

希望这会有所帮助。

您的promotion1对象有数据吗?
setHeaderBuilder()
具体做什么?它是否明确地将列添加到
单元格表中?@Suresh是的populated@enrybo它构造表头(即标题字段等),它是否调用过
PromotionTable.addColumn(column)
?您的promotion1对象是否有数据?setHeaderBuilder()
到底做了什么?它是否显式地将列添加到
单元格表中?@Suresh是的populated@enrybo它构造表头(即标题字段等)。它是否调用过
PromotionTable.addColumn(column)