GWT - Большие таблицы загружаются медленно в IE7 / 8 - PullRequest
1 голос
/ 25 января 2011

Я получил таблицу, которая не имеет нумерации страниц, поэтому все записи должны отображаться в одном большом потоке с полосой прокрутки. Использование таблицы Flex для того же.

Firefox не имеет больших проблем при загрузке страницы, он загружает 7000 записей за 90 секунд. Но IE просто зависает с 800 записями!

Наш технический архитектор рекомендует использовать виджет celltable с innerhtml вместо полноценных виджетов.

Ответы [ 2 ]

2 голосов
/ 25 января 2011

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, поэтому они плавают влево.Строки и таблица / разделы являются обычными блочными элементами.Вы управляете шириной ячеек в определенных столбцах с помощью дополнительных стилей.

например,

.ftbody {overflow-y:scroll; overflow-x:hidden; height: 120px; }
.fcell { display: inline; }
.cell0 { width: 80px; }
.cell1 { width: 120px; }

Это также упрощает такие вещи, как исправление заголовка / прокручиваемого содержимого, поскольку вы можете указать телоопределенная высота с полосами прокрутки переполнения.Сайт, такой как this , может дать вам представление о макете / стиле, который вы можете использовать.

Другая оптимизация будет состоять в том, чтобы не использовать виджеты для представления ячеек, если они вам не нужны.Виджеты наиболее полезны, если вам нужно добавить обработчики событий и т. Д., А если нет, то просто вставьте фрагменты текста или HTML в свойствах innerHtml / Text.Это облегчает использование памяти и ускоряет обработку событий.

0 голосов
/ 25 января 2011

Если у вас нет требований к сортировке, я бы порекомендовал использовать новую CellTable GWT 2.1.0, которая должна быть достаточно быстрой:

http://www.jarvana.com/jarvana/view/com/google/gwt/gwt-dev/2.1.0/gwt-dev-2.1.0-javadoc.jar!/com/google/gwt/user/cellview/client/CellTable.html

(Это может на самом делеработаю с сортировкой, просто пока не разобрался как)

...