2014-01-14 34 views
0

添加Celltable行動態在表的末尾目前我使用下面的方法如何在GWT

public void createTable(){ 
CellTable table = new CellTable(0,tableResource); 
MyDataProvider dataprovider = new MyDataProvider(table); 
setDataToList(myDataList); 
} 

public MyDataProvider extends ListDataProvider<MyModel>{ 
List<MyModel> dataList = new ArrayList<MyModel>(); 
public MyDataProvider(CellTable table){ 
    this.addDataDisplay(table); 
    this.setList(dataList); 
    } 

    public void setDataToList(List<MyModel> models){ 
     for(MyModel model: models){ 
      dataList.add(model); 
      refresh(); 
     } 
    } 

} 

我沒有看到表中的任何數據添加一串行我CellTable。整個桌子仍然是空的。

回答

0

您應該可以將元素添加到由ListDataProvider返回的列表中。然後,調用數據提供者的refresh()以將更改推送到UI。

你還需要將表添加到數據prvider:

dataProvider.addDataDisplay(table); 

http://www.gwtproject.org/javadoc/latest/com/google/gwt/view/client/ListDataProvider.html

+0

不工作...不在表中顯示任何內容。 – Ashish

+0

請參閱更新,您需要將該表添加到數據提供者。 – aglassman

+0

仍然無法使用。 – Ashish

-1

您可以使用此代碼

MyDataProvider.getList().add(new MyModel()); 
+1

避免「兩行」迴應。嘗試提供解決方案的解釋。 – rebeliagamer

0

我認爲一個更新celltable的dataProvider之後調用刷新應該做的伎倆。

//add table to data provider do only the 1st time 
dataProvider.addDataDisplay(cellTable); 

//add new item to the list 
dataProvider.getList().add(text); 

//flush and refresh dataprovider for it to be updated 
dataProvider.flush(); 
dataProvider.refresh(); 

//set celltable to new rowdata and row counts 
cellTable.setRowData(0, dataProvider.getList()); 
cellTable.setRowCount(dataProvider.getList().size(), true); 

//redraw the table with new data 
celltable.redraw(); 
+0

這不會增加多少電話。如果我們每次添加項目時都必須重新繪製表格,那麼我會添加所有項目並重新繪製表格。 – Ashish

+0

好吧,如果你正在更新的行數可以使用redrawRow(int absRowIndex)...但爲了添加更多的數據,你需要調用重繪,可悲的是目前沒有其他的選擇... – Onkar

+0

非常感謝,但你的解決方案似乎對我來說很慢。 – Ashish