【问题标题】:Classic ASP: Dynamic dropdown bases on a radio button selected经典 ASP:基于选定单选按钮的动态下拉列表
【发布时间】:2011-05-10 05:20:28
【问题描述】:

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

【问题讨论】:

  • 只是想确保您询问的是 .net 之前的经典 ASP,因为术语“单选按钮选择事件”告诉我这很可能是 ASP.net 网络表单而不是经典 ASP,它是用 vbScript 编写,并且没有每个说的事件
  • 是的,我询问了经典的 ASP。您已更正我使用了错误的术语...与 ASP.NET 混淆。我的错。

标签: asp-classic


【解决方案1】:

我们用 javascript 数组做了类似的事情。我们为每组值分配了我们称之为 DataType 的东西。例如,Apple 的 DataType 为 10; Oranges 的 DataType 为 20,Pears 的 DataType 为 30 等。单选按钮将具有相应的值。 RadioButton.Apple = 10、RadioButton.Orange = 20、RadioButon.Pears = 30 等

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

像冠军一样工作。

【讨论】:

  • 能否提供 OnChange 上的 JavaScript 代码?谢谢!!
【解决方案2】:

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

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

您也可以在客户端执行所有操作,尤其是在“Apples and Organges”的组合内容不是特别大的情况下。在这里,您可以加载一组 Javascript 对象或使用 JASON 并使用它来填充您的下拉列表。

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

【讨论】:

  • 我无法在 ASP.NET 中执行此操作,因为现有应用程序位于经典 ASP 中。我想按上面单选按钮中提到的类型将过滤器添加到现有下拉列表中。我的计划是使用单选按钮作为过滤器。我可以在客户端使用 JavaScript。对于单选按钮,我正在考虑... onSelect 而不是 onClick。你知道我在哪里可以找到关于单选按钮/JavaScript 的好例子吗?顺便说一句,谢谢!我希望我不会因为我以前的 cmets 让你感到困惑。
【解决方案3】:

您可以仅使用“普通”(静态)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>

`

【讨论】:

  • 我从不尝试 ajaxrequest/json。如果您能给我提供有关 ajaxrequest/json 的链接...有关如何使用它的示例,我将不胜感激。感谢你的回答!现在,我可以开始搜索 JavaScript。
猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多