在使用 AsyncDataProvider 创建的 GWT 项目 CellTable 中,未显示

In GWT project CellTable created with using AsyncDataProvider, isn't showed

我的问题是我刚刚创建了一个 cellTable 但它不起作用,因为我在我的浏览器上看到了这个

红色边框是包含 table 的 FlowPanel,它有黑色边框,旁边是 GWT.log

现在我已经尝试了所有方法,但我不知道为什么,也许由于某种原因它没有加载 table。但是,我确信 dataProvider 可以正常工作,因为正如您所见,日志显示数据 'Carrello' 已加载到我的 table 'carrello' 的列中。这里的代码 table:

public class ShopTable extends CellTable {
private CellTable<Carrello> carrello;

private Column<Carrello, String> columnTitolo;
private Column<Carrello, String> columnTipoSupporto;

private AsyncDataProviderCarrello dataProvider;

private String COLUMN_NAME_TITOLO="Titolo film";
private String COLUMN_NAME_SUPPORTO="Tipo";

public ShopTable(){
    carrello=new CellTable<>();
    createTable();

    createWithAsyncDataProvider();
    GWT.log("Column example: "+carrello.getColumn(0).toString());
}

private void createTable(){
    columnTitolo=buildColumnTitolo();
    columnTipoSupporto=buildColumnTipoSupporto();

    // NEED TO ADD HEADER (and FOOTER MAYBE)
    carrello.addColumn(columnTitolo, "Titolo Film");
    carrello.addColumn(columnTipoSupporto, "Tipo");
}

private Column<Carrello, String> buildColumnTitolo(){
    columnTitolo=new Column<Carrello, String>(new EditTextCell()) {

        @Override
        public String getValue(Carrello object) {
            GWT.log("aggiungo a carrelloTable: "+object);
            return object.getTitolo();
        }
    };
    columnTitolo.setDataStoreName(COLUMN_NAME_TITOLO);

    return columnTitolo;
}
private Column<Carrello, String> buildColumnTipoSupporto(){
    columnTipoSupporto=new Column<Carrello, String>(new EditTextCell()) {

        @Override
        public String getValue(Carrello object) {
            GWT.log("aggiungo a carrelloTable: "+object);
            return object.getTipoSupporto().toString();
        }
    };
    columnTipoSupporto.setDataStoreName(COLUMN_NAME_TITOLO);

    return columnTipoSupporto;
}
private void createWithAsyncDataProvider(){
    dataProvider=new AsyncDataProviderCarrello();
    dataProvider.addDataDisplay(carrello);
    dataProvider.updateRowCount(10, false);
    //.. SORTING METHOD NEED TO ADD

}    

}
这里是使用 ShopTable

的 Widget UIBinder 的代码
public class CarrelloPage extends Composite {

private static CarrelloPageUiBinder uiBinder = GWT.create(CarrelloPageUiBinder.class);

interface CarrelloPageUiBinder extends UiBinder<Widget, CarrelloPage> {
}

interface MyStyle extends CssResource{
    String carrelloTable();
}

@UiField MyStyle style;

@UiField FlowPanel spazio_carrello;

/**
 * necessario per dimensionare ad hoc per
 * il pannello
 */

private ShopTable carrello;

private void resizeWidget(){
    setWidth("100%");
    setHeight(Window.getClientHeight() + "px");
}

public CarrelloPage() {
    carrello=new ShopTable();
    initWidget(uiBinder.createAndBindUi(this));
    carrello.setStyleName(style.carrelloTable());
    spazio_carrello.add(carrello);
    resizeWidget();
    Window.addResizeHandler(resizeHandler);

}
private ResizeHandler resizeHandler = new ResizeHandler()
{
    public void onResize (ResizeEvent event)
    {
        setWidgetToMaxWidthAndHeight();
    }
};

private void setWidgetToMaxWidthAndHeight ()
{
    setWidth("100%");
    setHeight(Window.getClientHeight() + "px");

}
}

感谢关注!

您的 CellTable 的高度为零。这就是你看不到它的原因。

您要么必须在代码中设置 CellTable 的高度,要么您应该将其添加到实现 ProvidesResize 接口的小部件,如 LayoutPanel。