我有一个CellTables列表。如何合并两个表的行并返回结果。 例如
List<CellTable> cellTables = new ArrayList<CellTable>();
celltables.add(table1);
celltables.add(table2);
celltables.add(table3);
我正在使用以下方法
private CellTable fetchAllCellTables() {
CellTable table=new CellTable();
for(CellTable tempTable:cellTables){
int numRows = tempTable.getRowCount();
table.setRowCount(numRows+1);
table.setRowData((List) tempTable.getLayoutData());
}
return table;
}
但我无法看到总内容。
答案 0 :(得分:2)
我假设您想制作一个显示小表行的大表:
table1 table2
col1 | col2 | col3 col1 | col2 | col3 | col4
------------------ -------------------------
a | b | c 1 | 2 | 3 | 4
big table
col1 | col2 | col3 | col1 | col2 | col3 | col4
----------------------------------------------
a | b | c | 1 | 2 | 3 | 4
与例如
CellTable<String[]> table1 = new CellTable<String[]>();
table1.addColumn( new Column<String[], String>(new TextCell()){
public String getValue(String[] object){
return object[0];
}
}, "col1");
此解决方案仅在您可以编辑构建小表的源代码时才有效!
我首先要定义一个行对象类,它包含大表中单行的全部信息,例如。
public class RowObject{
public String[] table1RowObject; // the class of the field should be the generic
// type of the table1 CellTable
public MyObject table2RowObject; // the class of the field should
// be the generic type of table2
// ... other tables
}
现在将小表的泛型类型更改为RowObject
:
CellTable<RowObject> table1 = new CellTable<RowObject>();
table1.addColumn ( new Column<RowObject, String>(new TextCell()){
public String getValue(RowObject object){
// The data of table1 has been moved into the table1RowObject
// old: String[] object; return object[0];
return object.table1RowObject[0];
}
}, "col1" );
然后可以很容易地构建大表:
CellTable<RowObject> bigTable = new CellTable<RowObject>();
for (CellTable<RowObject> ct : tablesList){
for (int i = 0; i < ct.getColumnCount(); i++)
bigTable.addColumn( ct.getColumn(i) );
}
在数据提供者的帮助下同时加载所有表的数据,例如
ListDataProvider<RowObject> dataSource = new ListDataProvider<RowObject>();
dataSource.addDataDisplay( table1 );
dataSource.addDataDisplay( table2 );
dataSource.addDataDisplay( bigTable );
然后只要更新dataSource
,所有小表就会与大表同时更新。
答案 1 :(得分:1)
我认为这里最好的方法是为每个DataProvider
以及最终CellTable
使用CellTable
,
示例代码:
// Create a CellList.
CellList<String> cellList = new CellList<String>(new TextCell());
// Create a data provider.
MyDataProvider dataProvider = new MyDataProvider();
// Add the cellList to the dataProvider.
dataProvider.addDataDisplay(cellList);
// Get the underlying list from data dataProvider.
List<String> list = dataProvider.getList();
// Add the value to the list. The dataProvider will update the cellList.
list.add(newValue); // you can do this in a loop so that you merge all values
对于使用List
CellTable
的情况,您必须同样保留List
个DataProvider
个