gwt中的重复命令
我使用flex表来显示从数据库中获取的数据。当表包含大量列时,渲染flextable需要花费很多时间(我在包含80列和38行的表上测试了它),虽然它没有完全渲染,但我无法对页面执行任何操作。因此,我使用gwt中的重复命令,gwt,flextable,Gwt,Flextable,我使用flex表来显示从数据库中获取的数据。当表包含大量列时,渲染flextable需要花费很多时间(我在包含80列和38行的表上测试了它),虽然它没有完全渲染,但我无法对页面执行任何操作。因此,我使用Schedule.get().scheduleIncremental(ReapitingCommand)如下所示: final int WORK_CHUNK = 2; Scheduler.get().scheduleIncremental(new RepeatingCommand() {
Schedule.get().scheduleIncremental(ReapitingCommand)
如下所示:
final int WORK_CHUNK = 2;
Scheduler.get().scheduleIncremental(new RepeatingCommand() {
int rowCounter = 0;
@Override
public boolean execute() {
for (int i = rowCounter; i < rowCount; i++, rowCounter++) {
for (int j = 0; j < columnCount; j++) {
table.setText(i, j, data.get(i)[j]);
}
if (rowCounter % WORK_CHUNK == 0)
return true;
}
return false;
}
});
final int WORK_CHUNK=2;
Scheduler.get().scheduleIncremental(新的RepeatingCommand()命令){
int rowCounter=0;
@凌驾
公共布尔执行(){
for(int i=rowCounter;i
但是,如果我在data
object中有9行3列,它只渲染2行。
如何提高它的性能,因为正如我前面所说的,如果有38行80列,那么在没有scheduleIncremental
的情况下渲染所有数据会花费太多时间。甚至浏览器也会弹出脚本可能已停止响应的窗口。为什么不使用FlexTable而不是FlexTable来呈现数据?与FlexTable相比,CellTable在呈现大量数据方面要高效得多 对于上面的代码,我会这样做。去掉第一个for循环,因为execute()是递归的
Scheduler.get().scheduleIncremental(new RepeatingCommand() {
int rowCounter = 0;
int rowCount = 10;
@Override
public boolean execute() {
// do some work
for (int j = 0; j < columnCount; j++) {
table.setText(i, j, data.get(i)[j]);
}
rowCounter++;
if (rowCounter >= rowCount)
return false;
return true;
}
});
Scheduler.get().scheduleIncremental(新的RepeatingCommand()){
int rowCounter=0;
int rowCount=10;
@凌驾
公共布尔执行(){
//做些工作
对于(int j=0;j=行计数)
返回false;
返回true;
}
});
因为我只需要输出数据。我不需要那个CellTable的代码开销provides@maks你把它完全倒过来了。FlexTable的开销很高。另一方面,CellTable将非常快速地渲染大量行。从我问题中的代码可以看出,我使用的数据对象包含数据库中的数据。要使用CellTable,我必须创建一个TextCell来输出数据,但它的getValue方法有一个object参数,该参数必须包含具体字段才能输出其值。然而,我没有这样的具体领域。我将数据保存在具有数组列表的对象中,因此我需要一些迭代逻辑来输出它们使用CellTable,稍后谢谢您。