【发布时间】:2011-12-16 20:25:24
【问题描述】:
我目前正在尝试创建一个 DataGrid,它可以将具有值列表的实体作为一行。列表中的每个值都位于 DataGrid 中自己的列中。实体的值列表可能具有不同的大小,因此 DataGrid 将具有可变数量的列。我注意到,当我尝试创建 DataGrid 并循环将每个列添加到 DataGrid 的过程时,添加列所需的时间并没有线性增长。
这是我用来测试添加列的速度的代码
DataGrid<String> table = new DataGrid<String>();
table.setPageSize(25);
int NUM_COLUMNS = 40;
for (int i = 0; i < NUM_COLUMNS; i++) {
GWT.log("Adding column "+i);
TextColumn<String> nameColumn = new TextColumn<String>() {
public String getValue(String object) {
return object;
}
};
table.addColumn(nameColumn, "Column " + i);
table.setColumnWidth(nameColumn, 100, Unit.PX);
}
ArrayList<String> data = new ArrayList<String>();
for (int i = 0; i < 10; i++) {
data.add("row "+i);
}
table.setRowCount(data.size(), true);
table.setRowData(0, data);
table.setWidth("100");
每次我运行它大约需要 48 秒,或多或少 1 秒。加载少于 10 列似乎相当快,但随着列数的增加,加载它所花费的时间呈指数增长。
是否有另一种更快的向 DataGrid 添加列的方法?提前致谢。
【问题讨论】: