2009-09-23 1 views
2

У меня есть образец приложения Silverlight, который содержит поле со списком с тысячами значений (~ 4000). Значения вытягиваются из веб-службы и заполняются в настоящее время, что занимает много времени и делает пользовательский интерфейс невосприимчивым.Коробка Silverlight с 1000 значениями

Случай использования: - Поле в пользовательском интерфейсе должен быть заполнен пользователем
- Поле может иметь только определенные заранее определенные значения (уже присутствует в базе данных)
- Значения в поле не может быть сгруппированных/классифицированы

Что вы сделали или сделают в:
- сделать интерфейс более отзывчивым, когда значения становятся заселена в поле со списком
- заселить значения комбо как можно быстрее

Спасибо за чтение!

ОБНОВЛЕНИЕ:

Замечательные комментарии! Оценил!

Я отредактировал мое сообщение, чтобы представить пример использования.

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

+0

Что такое вариант использования, который требует 1000s значений в поле со списком? Похоже, что поле со списком может быть не лучшим решением, я предлагаю вам подумать над дизайном, а не оптимизировать ... –

+0

Существует нечто, называемое ** USABILITY **.Пожалуйста, сначала ознакомьтесь с этим. – TheVillageIdiot

+2

Это место, где вы можете задать вопросы, если у вас есть знания, чтобы помочь, помочь. Не превращайте это в место, чтобы кричать RTFM. – Nick

ответ

8

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

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

Вы заставляете их искать тысячи предметов, пусть они на самом деле ПОИСКА, а затем в диалоговом окне.

+1

+1 First * фактический * ответ! – mattruma

+0

@Nick: Хорошее предложение. Однако вместо всплывающего диалогового окна будет отображаться текстовое поле, которое автоматически указывается при вводе (например, в поле поиска Google). – pencilslate

+0

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

10

Я хотел бы избежать всей ситуации, в первую очередь -

Я лично ненавижу комбо-боксы с более чем около 20 элементов. В какой-то момент выберите лучший пользовательский интерфейс.

Комбинированная коробка с 4000 элементами обеспечивает потрясающий пользовательский интерфейс. Перепроектируйте это, чтобы упростить пользователю поиск того, что они ищут.

+0

Я бы проголосовал за это больше, но это только позволит мне сделать это один раз. –

+0

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

+0

Согласовано. Поле со списком похоже на неправильный интерфейс для выбора между тысячами опций. –

4

Ну, лично я не думаю, что ComboBox с 4000 значений является очень удобным, представь выбрать что-то из 4000 вариантов ...

Обычно, когда у меня есть большие объемы данных, как это я использую пейджинг.

+0

Напоминает мне о старой шутке: «Я сказал доктору:« Больно, когда я это делаю, что я могу сделать? »Он ответил: «Прекрати это делать». –

+0

спасибо, я громко рассмеялся на этом. ..haha –

+0

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

0

Может ли кто-нибудь предложить альтернативу помимо модального поиска вместо того, чтобы говорить, что комбо-боксы не работают. Что делать, если пользователь не знает значения для поиска? Например, попробуйте следующее:

 
    private void employeeUserNameTextBox_TextChanged(object sender,TextChangedEventArgs e) 
     { 
      Console.WriteLine("Hello"); 
      //Execute a search like so 
      var query= your stored procedure execution here. 
     } 

very abstract solution but I hope you get the point. 
Смежные вопросы