Данные на стороне сервера доступны на стороне клиента

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

Есть лучший способ сделать это?

Спасибо за уделенное время


person Olivier    schedule 02.11.2010    source источник
comment
Альтернативой размещению вариантов в текстовых полях является просто создание набора скрытых <select><option> ... </select> списков и отображение только того, который вы хотите в любой момент времени. Если их на самом деле не много, переключение между различными вариантами не должно занимать много времени.   -  person Pointy    schedule 02.11.2010


Ответы (5)


Лучший способ сделать это с помощью AJAX. Подводя итог, вам необходимо:

  1. напишите сценарий на стороне сервера (вероятно, ashx), который возвращает соответствующие результаты для раскрывающегося списка, зависящего от некоторой переменной
  2. используйте JavaScript (или библиотеку, например jQuery), чтобы выполнить вызов AJAX на страницу ashx. Этот вызов должен будет передать определяющую переменную на сервер через POST или GET.
  3. прикрепите этот вызов AJAX к событию изменения полей выбора, чтобы при их изменении можно было обновить другие
  4. когда вызов AJAX будет завершен, вам понадобится функция JavaScript, которая сортирует возвращаемые данные. Эти данные могут быть простым HTML, добавляемым на страницу, или более сложным объектом JSON, который необходимо отформатировать. Выбор остается за вами. Но это форматирование и ответ должны быть написаны на JavaScript.
person Coin_op    schedule 02.11.2010

Это можно сделать с помощью некоторых доступных методов ASP.Net AJAX. Если вы поместите раскрывающиеся списки в UpdatePanel и установите для них асинхронную обратную передачу, вы можете заставить их обновляться при выборе.

Поскольку обновляется только код внутри UpdatePanel, результаты загружаются намного быстрее.

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

person Prutswonder    schedule 02.11.2010

Как говорит laurencek, AJAX будет конечным решением для этого. На asp.net есть хороший пример с понятным объяснением, здесь. Небольшое использование веб-службы, которое может вызвать некоторую паузу, но все же хорошее объяснение того, что вы ищете.

person Ramiz Uddin    schedule 02.11.2010

Я представлю один из возможных сценариев.

  1. Когда ваша страница загружается впервые, вы отображаете список вариантов «по умолчанию». Это делается с помощью логики на стороне сервера.
  2. Когда пользователь щелкает раскрывающийся список, используя Javascript на стороне клиента, вы рассчитываете, как должны вести себя другие, и соответствующим образом манипулируете ими.
  3. Если одному из ваших списков требуется новая информация, которая недоступна на стороне клиента, вы используете AJAX для опроса сервера для получения этой информации.
  4. (необязательно) вы можете кэшировать новую информацию на стороне клиента, если вы не хотите, чтобы сервер опрашивался каждый раз, когда ваши пользователи щелкают по выпадающим спискам.
person darioo    schedule 02.11.2010

AJAX — это путь, указанный всеми остальными, вы можете сэкономить время, используя код, который уже написали другие, например: http://www.codeproject.com/KB/custom-controls/ajaxdropdownlist.aspx

Этот уже довольно старый, но, по крайней мере, может показать вам, что вам нужно.

person Shadow Wizard Wearing Mask V2    schedule 02.11.2010