Эффективная загрузка 24k записей в список выбора - PullRequest
1 голос
/ 21 декабря 2011

У меня есть классическая страница ASP, которая при загрузке делает вызов javascript на другую страницу asp, чтобы получить XML для загрузки в мой ящик.Он должен загрузить примерно 24 тыс. Вариантов;Излишне говорить, что это довольно громоздко.

Не все должны быть загружены сразу, и не имеет значения, действительно ли требуется время для загрузки, пока страница не зависает.Страница должна работать в ie6 + (облом).

Я считал, что когда пользователь прокручивает данный раздел, он загружается еще на 100, но не может найти подходящее свойство, которое будет работать вie6 для положения полосы прокрутки.Я подумал об использовании onmouseover определенной опции (например, «Наведите курсор для получения дополнительных результатов ...»), но событие не сработало.

Если кто-то может указать мне правильное направление, я действительно ценю это.:>

Ответы [ 3 ]

1 голос
/ 21 декабря 2011

Вы должны настроить службу, которая лениво загружает ваши элементы в список выбора, используя что-то вроде хранилища на стороне сервера.

Если бы я попытался решить эту проблему, я бы пошел по маршруту JsonRestStore и, используя Dojo Toolkit, запросил элементы по мере необходимости, а затем заполнил их в ComboBox / FilteringSelect.

Вот некоторые ресурсы для вас.

http://livedocs.dojotoolkit.org/dojox/data/JsonRestStore

А вот демонстрация того, что может Filtering Select .

В качестве последнего замечания, я мог бы добавить, что загрузка всего этого в DOM всегда будет плохой идеей.Вы должны использовать сетку или что-то, или использовать предиктор, поскольку они вводят, чтобы сузить.

Я использую JsonRestStore, который питает сетку примерно 5 миллионами предметов.Все, что я делаю, это загружаю новые элементы, когда пользователь прокручивает страницу вниз.Когда они прокручиваются, он обнаруживает, что мне нужно получить еще 25 элементов с сервера, запускает новый запрос, а затем он загружается в сетку.

0 голосов
/ 23 декабря 2011

Любой, кто абсолютно придерживался этого с помощью выпадающего списка, мог заставить его не блокировать браузер, используя setTimeouts. В chrome это работает отлично, но самый низкий тайм-аут, который может принять IE, это что-то вроде 13MS и действительно ограничивает время загрузки. Кроме того, я (лично) думаю, что это довольно уродливое решение ... но это лучше, чем блокировка формы, я думаю.

var i = 0;
function doStuff()
{
// code to execute, ie, add items
i++;
if (i != end of loop)
{
setTimeout(doStuff, 1);
}
setTimeout(doStuff, 1);

Еще один совет, который я нашел, заключался в том, чтобы избегать перекомпоновок, используя фрагмент кода или скрывая выпадающий список (просто устанавливая style.display в значение «none»), пока все элементы не будут добавлены.

0 голосов
/ 21 декабря 2011

Под "списком выбора" я предполагаю, что вы имеете в виду элемент HTML

<select>
  <option>option 1</option>
  ...
  <option>option 24000</option>
</select>

Короче говоря, более 10-15 опций в списке выбора - ДЕЙСТВИТЕЛЬНО ПЛОХАЯ ПОМОЩЬ.Так что, если это ваш случай, вы, возможно, захотите переосмыслить взаимодействие, так как даже ученым в области ракетостроения будет трудно найти и выбрать только правильный вариант из 24000 вариантов.

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