我有一个页面,其中包含一个下拉组合框,其值来自数据库。组合框旁边是两个文本框。
现在基于从下拉列表中选择的选项,我需要转到数据库并从数据库中获取相关数据并填充两个文本框。
页面中还有其他字段是直截了当的,但我不知道如何处理这种情况。
任何链接/示例代码/阅读材料/或任何其他形式的帮助将不胜感激。
谢谢,
我在这里大声思考,这是示例代码
<%
While not rsRecordSet.EOF
%>
<OPTION VALUE="<%=rsRecordSet("FldID")%>"><%=rsRecordSet("FldName")%></OPTION>
<%
rsRecordSet.MoveNext
Wend
Set rsRecordSet= nothing
%>
我需要Value,即FldID作为所选数据的引用,但是如果我可以在某处标记其余数据。例如另外两个领域需要显示FldAge和FldGender。我可以在rsRecordSet中获取这些,并且当我填充选项时,我可以填充一些标签,以及稍后如何调用它,具体取决于从组合中选择的选项。只是在这里大声思考。谢,S
答案 0 :(得分:2)
当然有很多方法可以做到这一点。此示例将在您选择选项时提交表单,然后显示年龄和性别。 (需要更改查询,连接等以适合您的对象)
<form action="" method="get">
<select name="id" onchange="this.form.submit()">
<%
While not rsRecordSet.EOF
%>
<OPTION VALUE="<%=rsRecordSet("FldID")%>"><%=rsRecordSet("FldName")%></OPTION>
<%
rsRecordSet.MoveNext
Wend
Set rsRecordSet= nothing
%>
</select>
</form>
<%
If Request.QueryString("id") <> "" Then
'Open recordset to retrieve age and gender
rsRecordSet2.Open "SELECT FldAge, FldGender FROM table WHERE FldID = " & CInt(Request.QueryString("id")), connection
If Not rsRecordSet2.EOF Then
%>
Age: <%= rsRecordSet2("FldAge") %><br />
Gender: <%= rsRecordSet2("FldGender") %><br />
<%
End If
rsRecordSet2.Close
Set rsRecordSet2 = Nothing
%>
最好用AJAX做这种事情,即使在Classic ASP中也很容易做到,特别是如果你可以使用jQuery。如果你想这样,我可以发一个例子。
使用AJAX解决方案进行更新:
好的,这是一个使用jQuery的例子,我推荐你使用,因为在JavaScript中使用Ajax会花费我太长时间......
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#id").change(function() {
$.get('ajax.asp?id='+$("#id").val(), function(data) {
var fields = data.split(',');
$("#age").html(fields[0]);
$("#gender").html(fields[1]);
});
});
});
</script>
<select id="id">
<%
While not rsRecordSet.EOF
%>
<OPTION VALUE="<%=rsRecordSet("FldID")%>"><%=rsRecordSet("FldName")%></OPTION>
<%
rsRecordSet.MoveNext
Wend
Set rsRecordSet= nothing
%>
</select>
<div id="age"></div>
<div id="gender"></div>
创建一个名为ajax.asp的脚本。您需要在那里添加所有数据库连接内容。然后根据传递的ID打开记录集,并将年龄和性别作为逗号分隔的字符串返回,如下所示:
<%
'Open recordset to retrieve age and gender
rsRecordSet2.Open "SELECT FldAge, FldGender FROM table WHERE FldID = " & CInt(Request.QueryString("id")), connection
If Not rsRecordSet2.EOF Then
Response.Write(rsRecordSet2("FldAge") & "," & rsRecordSet2("FldGender"))
End If
rsRecordSet2.Close
Set rsRecordSet2 = Nothing
%>