Выбор предмета из очень большого списка - PullRequest
4 голосов
/ 28 апреля 2010

Предположим, у меня есть список из нескольких тысяч организаций, и пользователь должен иметь возможность выбрать одну из них. Список слишком велик, чтобы его можно было заполнить в раскрывающемся списке при загрузке страницы, и пользователь часто знает, чего хочет, но это не первая часть названия организации. То есть они знают «Коллекции», но не то, что точное название организации - «Департамент Коллекций». Таким образом, пользователь должен будет / хочет ввести некоторую информацию.

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

Какое лучшее решение?

Ответы [ 9 ]

2 голосов
/ 28 апреля 2010

ИМО Я упросту пользовательский интерфейс до:

  • текстовое поле для ввода строки
  • раскрывающийся список для установки параметров фильтра, таких как: «содержит | начинается с | заканчивается на»
  • кнопка "Найти"

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

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

НТН.

При дополнительной проверке, если вам нужна «граненая навигация». Ссылка: http://www.alistapart.com/articles/design-patterns-faceted-navigation/

1 голос
/ 28 апреля 2010

Так что, мне кажется, ваши главные проблемы в

  1. Выразите, что пользователю необходимо выбрать организацию из списка (и только из списка).
  2. Выразите, что в списке много организаций.
  3. Предоставьте пользователю некоторые средства для быстрого поиска организации в списке.

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

0 голосов
/ 28 апреля 2010

Изначально древовидное представление звучит круто, но уверены ли вы, что одна классификация сократит данные до управляемых наборов? Если 80% ваших данных классифицируются как «государственные ведомства», это не очень помогает.

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

Я бы предложил использовать шаблон тегов, такой как iTunes. В моей библиотеке «рок» описывает 80% моей коллекции - но все еще является полезной категоризацией для чего-то вроде случайного перемешивания. У меня также есть возможность складывать теги, чтобы я мог использовать genre = "rock", десятилетие = "1990" и быстро сортировать свои данные в зависимости от того, что интересует.

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

Scenerio: - Перейдите к экрану XYZ и увидите, что есть 10 000 компаний на выбор - Нажмите «Классификация» и выберите «Правительственный департамент», и список обновится, чтобы указать, что сейчас их 1000. - Нажмите «регион» и выберите «Юг», и мой список упадет до 200. - Сортировать список по имени, а затем выбрать (или прокрутить, что угодно)

0 голосов
/ 28 апреля 2010

Я бы разбил его на два пути ...

Используйте текстовое поле с автозаполнением для человека, который набирает правильный заголовок (т. Е. Отдел коллекций); и отдельная кнопка поиска для поиска возможных совпадений. Кнопка поиска приведет вас на страницу результатов, чтобы выбрать нужный вариант. Эта функциональность будет аналогична работе поиска в MSDN.

0 голосов
/ 28 апреля 2010

Если бы вы могли разделить элементы по категориям, воспользовались бы вы какой-нибудь помощью управления деревом?

Таким образом, когда пользователь нажимает на узел, вы загружаете только элементы в этом узле. И так далее.

0 голосов
/ 28 апреля 2010

Мне кажется, что ваш список данных должен быть либо в базе данных, либо, по крайней мере, храниться вдали от пользовательского интерфейса. Где бы он ни хранился, поместите ключевое слово для каждой записи, скажем «Коллекция». Список ключевых слов может быть доступен как часть вашей функции автозаполнения. Затем выполните поиск только по ключевому слову.

0 голосов
/ 28 апреля 2010

Можно ли структурировать ваш список немного больше как дерево, чтобы он не был одним списком. Например. Не могли бы вы создать такую ​​группу, как «Правительственные отделы», а затем добавить в нее отдел сборов. Затем попросите пользователей сначала выбрать группу верхнего уровня, а затем показать им более короткие списки организаций в этой группе?

0 голосов
/ 28 апреля 2010

Вы можете использовать элемент управления автозаполнением Ajax: http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AutoComplete/AutoComplete.aspx. Вы можете выбрать поиск только в том случае, если пользователь набрал определенное количество символов.

Вы бы создали статический веб-метод для запроса коллекции (вы могли бы использовать LINQ) и возврата соответствующих организаций.

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

0 голосов
/ 28 апреля 2010

Вы можете использовать CustomValidator , чтобы убедиться, что содержимое TextBoxes содержится в вашей коллекции.

...