Быстрый Javascript Таблица сортировщик? - PullRequest
13 голосов
/ 14 марта 2009

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

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

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

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

Ответы [ 8 ]

7 голосов
/ 14 марта 2009

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

2 голосов
/ 29 июля 2012

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

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

enter image description here

РЕДАКТИРОВАТЬ : Любой, кто интересуется таблицей сортировки, должен посмотреть, что Мотти сделал с ним: https://github.com/Mottie/tablesorter

1 голос
/ 25 октября 2009

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

1 голос
/ 14 марта 2009

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

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

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

0 голосов
/ 15 августа 2013

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

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

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

0 голосов
/ 07 марта 2013

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

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

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

0 голосов
/ 14 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...