我有一张没有分页的表格,因此所有记录都需要用滚动条显示在一个大流程中。使用Flex表也是如此。
Firefox在加载页面时没有大问题,它在大约90秒内加载了7000条记录。但IE只挂了800条记录!
我们的技术架构师建议使用带有innerhtml的celltable小部件而不是完整的小部件。
答案 0 :(得分:2)
GWT的Grid和FlexTable源自标准的HTMLTable。基本上,每次插入表格行时,IE都会尝试重排整个表格,因此表格越长,重排时间就越长。因此,在大型网格中,性能非常糟糕。
最好使用div元素和样式来表示表格,行和单元格。
<div class="ftable">
<div class="ftbody">
<div class="frow">
<div class="fcell cell0">Hello</div>
<div class="fcell cell1">World</div>
</div>
</div>
</div>
插入新单元格不会导致其他单元格div重排,因此速度更快。
单元格是内联div,因此它们向左浮动。行和表/部分是常规块div。您可以通过其他样式控制特定列中单元格的宽度。
e.g。
.ftbody {overflow-y:scroll; overflow-x:hidden; height: 120px; }
.fcell { display: inline; }
.cell0 { width: 80px; }
.cell1 { width: 120px; }
这样可以更容易地修复标题/可滚动内容,因为您可以使用溢出滚动条将主体指定为特定高度。诸如this之类的网站可能会为您提供您可以使用的布局/样式的想法。
如果您不需要小部件,其他优化方法是不使用小部件来表示单元格。如果您需要添加事件处理程序等,则窗口小部件最有用。如果不需要,则只需通过innerHtml / Text属性注入文本或html的片段。它减轻了内存占用并加快了事件处理速度。
答案 1 :(得分:0)
如果您没有任何排序要求,我建议使用新的GWT 2.1.0 CellTable,它应该足够快:
(它实际上可能与排序有关,我还没弄明白怎么样)