2015-06-21 33 views
1

我的问题是,我刚刚创建了一个cellTable但它不工作,因为我认为这对我broswer the red border is of the FlowPanel that contains the table that has a black border, on side there is the GWT.log在使用AsyncDataProvider创建GWT项目CellTable,不表明

红色边框的FlowPanel包含具有黑色边框的表格,一边有GWT.log现在我已经尝试了所有内容,但我不知道为什么,也许它不会为某些原因加载表格。不过,我确信dataProvider的工作原因正如前面所看到的,日志显示数据“Carrello”加载在我的表“carrello”的列上。表的下面的代码:

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 

}  

}
这里的Widget UiBinder的的使用该ShopTable注意力

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"); 

} 
} 

感谢代码!

回答

3

您的CellTable的高度为零。这就是为什么你没有看到它。

您必须在代码中设置CellTable的高度,或者应将其添加到实现了ProvideResize接口的小部件(如LayoutPanel)。

+0

好的,我遵循你的建议,并简化它我直接在UIBinder类中添加了CellTable的代码,非常感谢! – anto150192