шаблон проектирования для связанных входов - PullRequest
0 голосов
/ 08 апреля 2010

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

  • ddlCountry (DropDownList)
  • ddlState (DropDownList)
  • ddlCity (DropDownList)
  • ddlBoro (DropDownList)
  • txtAddress (TxtBox)
  • txtZipcode (TxtBox)

и объект, представляющий datarow со значением для каждого:

  • countrySeqid
  • stateSeqid
  • citySeqid
  • boroSeqid
  • address
  • zipCode

    естественно, значения country, state, city и boro будут значениями первичных ключей некоторых справочных таблиц.

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

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

Я думаю, я ищу элегантное решение.Я использую asp.net, но я думаю, что это не имеет отношения к вопросу.я смотрю больше в шаблон дизайна.

1 Ответ

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

Я разработал подобные экраны раньше, и asp.net действительно мешает делать что-либо, кроме постбэка после каждого выбора, поэтому это мало что значит.

Это не столько вопрос шаблонов проектирования, сколько контрактов на уровень обслуживания. Насколько отзывчивым должен быть сайт? На каком типе связи вы находитесь? Будут ли пользователи точно знать, какие выпадающие списки они хотели бы сделать, или они потратят некоторое время на просмотр? Должна ли форма быть удобной для мобильных устройств?

Это вопросы, которые влияют на ваш дизайн. Позвольте мне объяснить.

Есть две вещи, которые вы можете сделать здесь. Как всегда, на самом деле вы, вероятно, выберете гибридный подход, но крайности:

  1. Каждый выбор вызывает обратную передачу. Запрос обрабатывается путем запроса службы для следующего набора параметров и перестройки страницы с новыми заполненными параметрами. Очевидно, это не особенно быстро и не упрощено, но оно является наиболее надежным и кроссплатформенным.
  2. Когда страница загружается, она содержит в javascript структуру, отображающую все параметры, которые будут заполнять раскрывающиеся списки. У вас будет только один постбэк в конце. Очевидно, что это очень быстро, но не способствует созданию огромных списков, не очень переносимо и создает некоторые трудности, если вам нужна какая-либо продвинутая логика в цепочке выбора.

Возможно, хорошим промежуточным звеном может стать обработка JavaScript как своего рода кэша первого уровня, а сервера - как кэша второго уровня. Вы добавили на страницу наиболее часто выбираемые страны / штаты, но в случае промаха вы запускаете постбэк ajax, чтобы получить больше данных. Конечно, это гораздо больше работы для вас.

Так что да. Надеюсь, что это помогло

...