Альтернативный элемент управления пользовательского интерфейса для больших списков данных вместо DropDownList

Я использую C# и ASP.NET с версией 2.0 библиотеки .NET Framework в этом конкретном проекте. Мы также используем AjaxControlToolkit. В AjaxControlToolkit должны быть элементы управления, чтобы создать удобное решение пользовательского интерфейса для проблемы, с которой я столкнулся.

Я столкнулся с этим в нескольких проектах за последний год и использовал разные решения в прошлом. Текущий дизайн проекта, который я только что выбрал, заключается в том, что есть элемент управления ‹asp:DropDownList›, и при загрузке страницы выполняется вызов базы данных для получения списка значений. Затем это связывается с использованием источника данных DropDownList. Проблема в том, что из базы данных возвращается 25 тысяч элементов. Во-первых, пользователю неприемлемо прокручивать десятки тысяч элементов. Но, что еще более важно, в каждом браузере, на котором он тестировался (IE 7, FF 3, Safari и Chrome), браузер полностью зависает при распространении элементов раскрывающегося списка.

Я думаю об использовании формы Modal Popup, который представляет собой расширитель автозаполнения, который позволяет пользователю перейти к конкретной компании. Итак, в поле, где они должны выбрать компанию, они нажимают на значок «выбрать компанию», появляется модальная форма, позволяющая им использовать расширитель автозаполнения для выбора существующей компании. Они нажимают «ОК», и это сохраняет значение в поле.

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


person stephenbayer    schedule 29.10.2008    source источник


Ответы (4)


Я думаю, что ваша идея для расширителя автозаполнения - лучшее решение. У меня тоже была эта проблема (звучит похоже - проект, который вы принимаете от кого-то другого). Отказ часто исходит от пользователя. Они привыкли выбирать из списка предметов. К сожалению, по мере роста базы данных это становится все менее и менее осуществимым.

Но когда на страницу загружено 0,5 МБ html (не включая состояние просмотра), приходится идти на компромиссы.

Почему вы думаете, что вам нужно создать модальное всплывающее окно? Разве вы не можете просто добавить расширитель на страницу ввода данных?

person Keltex    schedule 30.10.2008
comment
Это почти то, что я решил сделать. У меня все еще есть несколько причуд, чтобы убедиться, что текстовое поле имеет значение только из списка. - person stephenbayer; 01.11.2008

Мне пришлось столкнуться с той же проблемой. Но в итоге я использовал поле со списком с поддержкой пейджинга и автозаполнением. В настоящее время это поле со списком принадлежит Telerik. Это поле со списком для автозаполнения, так как вы не можете ввести его в раскрывающийся список.

person Aaron Fischer    schedule 29.10.2008
comment
Я бы не хотел использовать сторонние элементы управления. Однако я пытаюсь мысленно представить, как выглядит это решение. - person stephenbayer; 29.10.2008
comment
Это поле со списком с полосой прокрутки в списке, которое показывает 20 элементов, если вы прокрутите вниз, он выберет следующие 20 и добавит их в список. Комплект ajaxtool может иметь этот тип управления. - person Aaron Fischer; 30.10.2008

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

person Community    schedule 29.10.2008
comment
нет, не совсем... :( В базе данных они так не классифицируются. - person stephenbayer; 29.10.2008

  • Несколько каскадных ListBox, каждый из которых уточняет набор результатов предыдущего
  • AJAX AutoCompleteExtender
person tsilb    schedule 31.10.2008