Быстрый сортировщик таблицы Javascript?

У меня есть таблица с примерно 250 строками (может удваиваться в течение 6 месяцев) и 50 столбцов на этой странице (предупреждение: медленно с IE). Я использую JQuery Table sorter. Но IE 7 слишком медленный: он дает предупреждение о медленном javascript и спрашивает, хочу ли я его остановить. Я потратил много времени, чтобы улучшить производительность, поэтому он отлично работает для всех других браузеров:

  • сортировать только текст и цифру
  • удалены все, кроме 2 парсеров
  • создала дополнительную таблицу, содержащую все значения, намного быстрее, чем выполнение node.textContent() для каждой ячейки
  • удалить строчные буквы, обрезать и т.д.

Моя версия javascript здесь. Думаю, я не могу его оптимизировать гораздо больше. Я ищу еще одну быструю реализацию сортировщика таблиц или любую хорошую оптимизацию, о которой я, возможно, забыл, так что IE 7 не будет жаловаться на время выполнения.

Изменить: Я отключил сортировку по 35 столбцам, это еще слишком долго для IE

Ответы

Ответ 1

Я использую sorttable чрезвычайно быструю библиотеку javascript для сортировки таблиц. (не JQuery)

Ответ 2

Я большой поклонник сортировщика таблиц JQuery Кристиана Баха... http://tablesorter.com/docs/

  • Компактный и быстрый
  • Сортировка по нескольким столбцам
  • Динамическая полоса зебры
  • Дополнительное расширение метаданных делает вещи еще проще
  • Парсеры для сортировки текста, html, чисел, любых (легко настроить)
  • CSS-заголовки (конечно)
  • Кросс-браузер: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0 +

enter image description here

EDIT. Любой, кто интересуется tablesorter, должен увидеть, что Mottie сделал с ним: https://github.com/Mottie/tablesorter p >

Ответ 3

Большинство JScript-решений, которые работают медленно, имеют много взаимодействия с DOM. В настоящий момент, когда вы выполняете редактирование уровня строки на уровне DOM, это займет много времени в IE. Если вы строите HTML в строке, а затем сразу же помещаете его в DOM, это будет намного быстрее. (На последнем PDC были некоторые демонстрации, показывающие именно это.)

Но мораль этой истории здесь такова, что ваш стол довольно большой. Вы можете подумать об использовании REST, со страничным поиском и сортировкой, а также с некоторой логикой на стороне сервера. Я думаю, что это может быть намного быстрее и отлично работает с JQuery. (И это все еще решение AJAX.) Это может даже сэкономить вам некоторую пропускную способность...

Надеюсь, это поможет.

Ответ 4

Замечание о любых ссылках на applyWidget и их соответствующие привязки, а также удаление неиспользуемых парсеров сыграло большую роль в таблице 500 строк в IE6 (да, я знаю, но она все равно не умрет).

Ответ 5

Одна из худших вещей, которые вы можете сделать, это использовать eval(), и я вижу это в вашем коде. Вы должны прокомментировать свой код и посмотреть, где находится узкое место.

Ответ 6

Отличным и надежным вариантом является этот плагин jQuery, называемый DataTables.

  • Изменение размера страницы
  • Фильтрация "на лету"
  • Сортировка нескольких столбцов с обнаружением типа данных
  • Умная обработка ширины столбцов
  • Отображать данные практически из любого источника данных DOM, массива Javascript, Ajax файл и обработка на стороне сервера (PHP, С#, Perl, Ruby, AIR, Gears и т.д.)
  • Параметры прокрутки для окна просмотра таблицы
  • Полностью интернационализируется
  • Поддержка jQuery UI ThemeRoller.
  • Rock solid - подкрепляется набором из 2900 модульных тестов.
  • Широкий выбор плагинов вкл. Редактор, TableTools, FixedColumns и более
  • Это бесплатно!

Ответ 7

Если вы работаете с серьезными большими базами данных, попробуйте серверную сторону с DataTables (плагин jQuery).

В основном все пейджинг, фильтрация, сортировка и т.д., которые делают DataTables, могут быть переданы на сервер (или любой другой источник данных).

Полный пример: http://datatables.net/examples/data_sources/server_side.html

Ответ 8

Проблема в функции buildCache (таблица) Строка 219 Ошибка: "all_data" не определен