经典ASP:基于所选单选按钮的动态下拉菜单

时间:2011-05-10 05:20:28

标签: asp-classic

我是Classic ASP的新手。我想根据所选的一个单选按钮在下拉列表中显示列表。数据库具有代码列,例如“A”和“O”。在页面上,我想显示3个单选按钮,如A,O和All。 A =苹果,O =橙子和全部=苹果和橘子。可以说,当用户选择A时,下拉列表会自动列出所有类型的苹果或选定的O,然后下拉列表应列出所有类型的橙子,或者全部列出两者。默认情况下,页面应自动显示苹果。如何在页面上显示单选按钮?我是否需要JavaScript或使用所选事件的单选按钮的记录集?请帮忙

3 个答案:

答案 0 :(得分:1)

我们用javascript数组做过这样的事情。我们将所谓的DataType分配给每组值。例如,Apples的DataType为10; Oranges的DataType为20,Pears的DataType为30等。单选按钮具有相应的值。 RadioButton.Apple = 10,RadioButton.Orange = 20,RadioButon.Pears = 30等。

我们会带回所有数据类型的所有数据并将其存储在javascript数组中。我们为单选按钮设置onClick或onChange事件,并根据单选按钮中选择的数据类型从javascript数组重新填充我们的dropdows。

像冠军一样工作。

答案 1 :(得分:0)

你可以用“普通”(静态)html

显示收音机

然后定义onclick事件并对您的经典asp站点进行ajaxrequest。根据json或html中的单选按钮的值发回下拉列表的内容,并通过javascript填写下拉列表。

链接:

link for JSON

jQuery (which is a cool javascript framework)

documentation for jQuery post (ajax request with 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 & "<option value='" & rs.fields("applename").value & "'>" &     rs.fields("applename").value & "</option>"

                rs.movenext
            loop
            response.write html
        case "O"
            ' load oranges


            ' write recordset as html to client
            do while not rs.eof
                html = html & "<option value='" & rs.fields("applename").value & "'>" & rs.fields("applename").value & "</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 & "<option value='" & rs.fields("applename").value & "'>" & rs.fields("applename").value & "</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>

`

答案 2 :(得分:0)

ASP.net最简单的方法是使用单选按钮选择事件。这样做的缺点是它将触发页面的完整回发,因此表单将显示为闪烁或重新加载。

您可以使用Update Panel(在Visual Studio 2008及更高版本中可用)实现此效果。更新面板有自己的优点和缺点outlined here。链接的文章还说明了如何使用它。

您也可以在所有客户端进行,特别是如果“苹果和组织”的组合内容不是特别大的话。在这里,您可以加载一组Javascript对象或使用JASON并使用它来填充下拉列表。

一个不那么优雅的方法来做这个客户端将是三个列表作为三个单独的下拉列表并使用javascript(jQuery在这里非常强大)来显示适当的列表。在服务器端,您将从单选按钮选择确定的列表中选择您的值。