2009-08-25 2 views
3

Я работаю с приложением ASP.NET MVC.Как загрузить большое количество данных в ListBox? ASP.NET MVC-приложение

Существует требование, чтобы пользователь мог выбрать элемент из списка, который может содержать более 30 000 записей.

Есть ли динамический способ заполнения содержимого этого ListBox с помощью вызова Ajax - что бы хорошо работать?

Могу ли я лучше просто заполнить элемент управления ListBox на сервере, а затем ждать пользователя, пока страница будет отображаться с 30 000 записей?

Было бы лучше, если бы я принял какое-то решение jQuery?

Любые предложения по наиболее эффективному решению этого сценария (без изменения клиента требования :-))?

+0

Аналогичный вопрос: http://stackoverflow.com/questions/1258689/asp-net-javascript-loading-huge-data-in-browser/1258727 –

+0

Отправьте клиенту ссылку на эту тему и по адресу http: // homepage.mac.com/bradster/iarchitect/controls.htm Моя ставка заключается в том, что на этой веб-странице больше скриншотов его приложений ... – voyager

ответ

9

Это звучит как плохая идея - 30 000 записей? Как бы вы себя чувствовали, если бы вам пришлось выбирать из списка такого размера?

Лучше использовать автозаполнение для этого типа прецедента.

+3

+1 автозаполнение/предлагать лучший маршрут – redsquare

+0

plug: http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/это то, что я использую для крупной бизнес-системы, чтобы автозаполнять множество записей. – Kezzer

+0

+1 за то, что вы не используете список для записей 30K. – BigBlondeViking

3

Единственный ответ на этот вопрос: не. Вы когда-нибудь пытались выбрать что-то из ListBox с 30 000 предметов? Клиент когда-либо делал это?

Обновление: Я думаю, что наиболее эффективным решением является отправить ссылку на эту страницу клиенту, чтобы дать ему ощущение универсального ужаса, вызванного этим вопросом.

+0

LOL! Как я и сказал. Я согласен с вами. Просто хотел сделать абсолютно уверенным, что я ничего не замечал. – jsteele

0

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

Если вы загружаете все через вызовы AJAX (jQuery или иначе), он должен будет выполнить запрос, загрузить результаты, проанализировать результаты и отобразить их на странице ... что еще медленнее (особенно для что-то такое).

Я бы спросил, почему для ListBox требуется так много записей. Ни один пользователь не сможет эффективно использовать этот элемент управления. Может быть, сократить размер списка и реализовать пейджинг, чтобы сделать вещи более удобными?

1

Звучит как полное безумие.

Как пользователь почувствует, должен ли он прокручивать 30000 записей? Кроме того, для пользователей с не идеальными глазами и несколько неразвитыми моторными навыками, чтобы точно манипулировать мышью, опыт будет больно.

Не делайте этого.Используйте другие подходы:

  • пейджинг контента, необязательно с флажками, чтобы выбрать элементы
  • Сортировка контента в соответствии с различными критериями
  • варианты категоризировать для пользователя сначала выбрать нужную категорию, а затем выбрать из короткого список опций
  • Если точный выбор не важен, попробуйте использовать технику Ajax, чтобы показать список с предложениями, чтобы выбрать из
  • Добавить поле фильтра для пользователя, чтобы определить шаблон, и пусть остальные просто отпадают

Еще одна идея для вас - использовать расширенный список, поддерживающий несколько столбцов и значков. Посмотрите на проводник Windows. Гораздо проще выбирать из нескольких столбцов с большими значками, чем из длинного списка мелочных строк.

Еще один недостаток вашего подхода: наличие большого количества записей одновременно в списке выбора также расширит размер страницы до нескольких мегабайт. Если у вас включен режим просмотра, он будет довольно медленным и ресурсоемким.

+0

Я согласен со всеми комментариями выше. Мы конвертируем существующее приложение, которое имеет ListBox с элементами 30k +. Клиент хочет сохранить это поведение, несмотря на наши предложения об обратном. Я хотел убедиться, что я ничего не замечаю. – jsteele

4

Я не буду пытаться ответить на этот вопрос, как someone else already did:

Этот тип управления рассматривается слишком часто в корпоративных приложений: раскрывающихся элементов управления и списки, которые содержат тысячи записей.

Some programmers just use a hammer for screws. http://homepage.mac.com/bradster/iarchitect/images/list2.gif

Программисты, которые ошибочно используют его обычно получить подсказку, что это может быть неуместно, когда они узнают, что это занимает чрезвычайно много времени , чтобы загрузить форму.

Следующая сообщение, отправил в Основном программистов форума Визуальный на 11 декабря 1996 , типична:

Я хочу, чтобы заполнить поле в список с 2000 пунктов ... Это занимает невероятно длинный ... более 20 минут. Есть идеи?

И еще отправил 16 декабря 1996 года, несколько менее типично:

Я ищу для управления списком коробки, которые могут ... держать большие количество записей (20000)

предлог для такого громоздкого управления часто ошибочная интерпретация всемогущего призыва к оружию, «Мы должны обеспечить целостность данных.» Программисты хотят удостовериться, что пользователь указывает действительную запись; в их изображении , лучший способ сделать это - заставить пользователя выбирать из списка. Это было бы хорошо, если бы у вас было, скажем, 20, 60 или, может быть, даже 100 предметов в списке .Помимо этого числа, факт , что пользователь может прокручивать только нескольких предметов за один раз, приводит к тому, что управление становится громоздким.

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

Все данные могут быть организованы в некотором значимом образе, что позволит пользователя более быстрого доступу конкретной информации он или она интересуюсь. Файлы организованы в папки и каталоги для примера. Сотрудники часто категоризированы отделом, должность, или класс оценки. Проектирование интерфейса для использования соответствующей организации позволит пользователю быстрее найти нужную информацию , в то же время, «обеспечение целостности данных».

0

30 000 предметов на самом деле не так много с точки зрения производительности. Попробуйте, при тестировании я смог поставить до 100 000 предметов.

С точки зрения пользователей, я бы сказал, что 1000 пунктов в абсолютном максимуме, вероятно, являются пределом перспективы юзабилити. Обычно я останавливаюсь на 100 предметов. Я бы предложил добавить текстовое поле прямо над вашим списком. Позвольте пользователю искать условия. Вы можете использовать jquery для заполнения окна или использовать панель обновления. Если вы ограничите результаты до 100 пунктов, это будет очень быстро.

0

Просто используйте какую-то хорошую старомодную проверку; нет необходимости в сумасшедшем списке со всеми известными опциями во вселенной.

Смежные вопросы