Это интересная и довольно распространенная проблема пользовательского интерфейса, как эффективно выбирать элементы. Я предполагаю, что вы хотите, чтобы пользователь сначала выбрал один элемент, и что интересующий вас механизм заключается в том, как выбрать другие элементы, связанные с этим первым элементом.
Существуют различные методы выбора. ,С точки зрения удобства использования было бы предпочтительнее использовать ОДИН метод для каждого сценария. Затем, когда пользователь увидит это, он будет знать, что делать.
различные техники выбора:
- раскрывающийся список - очевиден для одиночного выбора.
- открытый список мультивыберите - например: многострочное текстовое поле, которое показывает 10 или 20 строк и имеет полосу прокрутки
- , где вы выбираете, затем нажимаете и «добавляете» ссылку или кнопку, чтобы добавить несколько элементов выбора
- перемещение списка- если у вас есть два открытых списка, со всеми вариантами, доступными в левом списке, вы выбираете несколько, а затем нажимаете кнопку, чтобы переместить ваш выбор в правильный список.
- Флажки - подходит только для нескольких вариантовиз нескольких вариантов выбора.
- Список элементов, каждый с кнопкой «рядом» рядом с ними - хорошо для коротких списков
Вы сказали, что у вас будет тысячивозможные варианты, так что исключаются 1 и 5. Действительно, тысячи исключат все из них, поскольку удобство использования плохо масштабируется, если в списке более нескольких сотен.
Если вы можете рассчитывать наПользователь может фильтровать список, как в вашем примере, тогда 6 может подойти. Если вы думаете о том, как работает тегирование изображений в Facebook, я думаю, что оно довольно эффективно для длинных списков: background: тегирование изображений в Facebook - это механизм, который позволяет назначать одному или нескольким людям отдельные части изображения, т. Е. Маркировать их.
Когда вы выбираете изображение для тега (то есть «отдельный элемент») и хотите связать с ним другие элементы (людей), появляется диалоговое окно. Он содержит 6 лучших имен, которые вы использовали в прошлом, и текстовое поле, где вы можете начать вводить имя человека, которого вы хотите использовать. По мере ввода список динамически изменяется, чтобы сократить количество людей до тех, которые содержат введенную вами последовательность букв. Это очень хорошо работает для больших списков, но зависит от того, кто печатает, чтобы фильтровать. Он также будет полагаться на использование сценариев для интеллектуального сокращения списка на основе ввода пользователя.
Для вашего приложения он будет полагаться на то, что пользователь выполнит этот шаг один раз для каждой ассоциации, так как я предполагаю, что другаяэлементы не будут иметь одинаковые названия!
Вот изображение приложения тегов Facebook: http://screencast.com/t/9MPlpJQJzBQ