#asp-classic
#asp-классический
Вопрос:
Я новичок в классическом ASP. Я хочу отобразить список в выпадающем списке на основе одного из выбранных переключателей. В базе данных есть столбец для кода, такой как «A» и «O». На странице я хочу отобразить 3 переключателя в виде A, O и All. A = яблоки, O = апельсины и все = яблоки и апельсины. Допустим, когда пользователь выбрал A, в выпадающем списке автоматически отображаются все типы яблок или выбрано O, тогда в выпадающем списке должны быть перечислены все типы апельсинов или все для обоих. По умолчанию на странице должны автоматически отображаться яблоки. Как мне отобразить переключатели на странице? Нужен ли мне JavaScript или использовать набор записей для события, выбранного переключателем? Пожалуйста, помогите
Комментарии:
1. Просто хочу убедиться, что вы спрашиваете о ASP до .net classic, поскольку термин «событие выбора переключателя» подсказывает мне, что это, вероятно, будет ASP.net веб-формы не классический ASP, который был написан на VBScript и не содержал событий для каждого высказывания
2. Да, я спрашивал о классическом ASP. Вы исправлены, я использовал неправильный термин … запутался с ASP.NET. Я виноват.
Ответ №1:
Мы делали подобные вещи с массивами javascript. Мы присвоили то, что мы назвали типом данных, каждой группе значений. Например, яблоки будут иметь тип данных 10; апельсины — тип данных 20, груши будут иметь тип данных 30 и т.д. Переключатель будет иметь соответствующие значения. RadioButton.Apple = 10, RadioButton.Оранжевый = 20, RadioButon.Груши = 30 и т.д.
Мы бы вернули все данные для всех типов данных и сохранили их внутри массива javascript. Мы настроили события onClick или onChange для переключателей и повторно заполнили наши выпадающие списки из массивов javascript в зависимости от типа данных, выбранного в переключателе.
Работает как чемпион.
Комментарии:
1. Не могли бы вы, пожалуйста, предоставить мне коды JavaScript на onChange? Спасибо!!
Ответ №2:
Самый простой способ с ASP.net заключается в использовании события выбора переключателя. Недостатком этого является то, что это вызовет полную обратную отправку страницы, поэтому форма, по-видимому, будет мигать или загружаться повторно.
Вы можете добиться этого эффекта с помощью панели обновления (доступна в Visual Studio 2008 и более поздних версиях). Панель обновления имеет свои плюсы и минусы, описанные здесь. В связанной статье также показано, как его использовать.
Вы также могли бы сделать это на стороне клиента, особенно если объединенное содержимое «Яблок и апельсинов» не особенно велико. Здесь вы могли бы загрузить массив объектов Javascript или использовать JASON и использовать это для заполнения вашего выпадающего списка.
Не таким элегантным способом сделать это на стороне клиента было бы отобразить три списка на странице в виде трех отдельных выпадающих списков и использовать javascript (jQuery здесь очень мощный) для отображения соответствующего списка. На стороне сервера вы получите команду выбрать нужное значение из списка, определенного выбором переключателя.
Комментарии:
1. Я не могу сделать это в ASP.NET потому что существующее приложение находится в классическом ASP. Я предполагаю добавить фильтр к существующему выпадающему списку по типам, как указано в переключателях выше. Мой план состоял в том, чтобы использовать переключатели в качестве фильтра. Я мог бы использовать JavaScript на стороне клиента. Что касается переключателей, я думаю о … onSelect вместо onClick. Вы знаете, где я могу найти хорошие примеры, касающиеся переключателей / JavaScript? Кстати, спасибо! Надеюсь, я не сбил вас с толку своими предыдущими комментариями.
Ответ №3:
вы могли бы отображать кнопки радио просто с помощью «обычного» (статического) html
затем определите событие onclick и сделайте ajaxrequest к вашему сайту classic asp. отправьте обратно содержимое выпадающего списка в зависимости от значения переключателя в формате json или просто html и заполните выпадающий список с помощью javascript.
Ссылки:
jQuery (который является классным фреймворком javascript)
документация для jQuery post (ajax-запрос с помощью jQuery)
поскольку вы никогда не использовали json, вы могли бы попробовать отправить результаты в виде html следующим образом:
<%
if request.form("act") = "loadDropdown" then
dim html : html = ""
select case request.form("which")
case "A"
' load apples
' write recordset as html to client
do while not rs.eof
html = html amp; "<option value='" amp; rs.fields("applename").value amp; "'>" amp; rs.fields("applename").value amp; "</option>"
rs.movenext
loop
response.write html
case "O"
' load oranges
' write recordset as html to client
do while not rs.eof
html = html amp; "<option value='" amp; rs.fields("applename").value amp; "'>" amp; rs.fields("applename").value amp; "</option>"
rs.movenext
loop
response.write html
case "all"
' load all fruits
' write recordset as html to client
do while not rs.eof
html = html amp; "<option value='" amp; rs.fields("applename").value amp; "'>" amp; rs.fields("applename").value amp; "</option>"
rs.movenext
loop
response.write html
end select
response.end
end if
%>
<script>
function loadDropdown(which) {
$.post("mySite.asp", { act: "loadDropdown", which: which }, function(data) {
// fill dropwon with results of ajax:
$("#myDropdown").html( data )
});
}
</script>
<input type="radio" name="fruits" onclick="loadDropdown('A')"> Apples<br>
<input type="radio" name="fruits" onclick="loadDropdown('O')" > Oranges<br>
<input type="radio" name="fruits" onclick="loadDropdown('all')"> All<br>
<select name="myDropdown" id="myDropdown"></select>
`
Комментарии:
1. Я никогда не пробую ajaxrequest / json. Я был бы очень признателен, если бы вы могли предоставить мне ссылки, касающиеся ajaxrequest / json … примеров того, как это использовать. Спасибо за ответ! Теперь я могу начать поиск JavaScript.