Сочетание ценностей и соответствующего шаблона проектирования - PullRequest
1 голос
/ 13 января 2010

Привет, Я хотел бы спросить, какой шаблон проектирования будет лучшим в сценарии, описанном ниже: У меня есть два комбинированных списка: вариант1 вариант21 вариант2 вариант22 вариант3 вариант23 option4 option24

должны быть определенные комбинации этих двух комбинированных списков - во втором комбинированном списке должны отображаться только определенные значения в зависимости от значений, выбранных в первом комбинированном списке Например: если я выберу опцию 1 - только опция 21 и опция 22 должны быть видны. Какой тип дизайна я должен использовать? Я хотел бы добавить, что я не использую БД.

Ответы [ 2 ]

1 голос
/ 13 января 2010

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

1 голос
/ 13 января 2010

Почему все должно быть "шаблоном дизайна"?

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

option_tree = {
    ("option1", "Option 1"): {
        ("option21", "Option 2/1"),
        ("option22", "Option 2/2"),
        },
    ("option2", "Option 2"): {
        ("option21", "Option 2/1"),
        ("option23", "Option 2/3"),
        ("option24", "Option 2/4"),
        ...

Если вы имеете в виду определенный API пользовательского интерфейса, возможно, вы могли бы упомянуть, что ... большинство API (каркасов веб-рендеринга и т. Д.) Имеют канонический способ реализации вещей.

Редактировать: для .NET тот же метод может работать после быстрого поиска в Google:

Есть словарь (строка -> вектор).

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

combobox.AddRange(dictionary.Keys)

второй комбинированный список можно использовать с

secondcombo.AddRange(dictionary.Item(combo.SelectedItem))

Если вы очистите второй и переустанавливаете его / выше при каждом изменении первого - готово.

...