经典 ASP:如何将所选值从下拉列表传递到 onchange 事件的 SELECT 查询
Classic ASP: How to pass the selected value from Dropdown to SELECT query on onchange event
我需要将所选值从下拉列表传递到 SELECT 查询,并根据传递给页面中显示的相应 table/recordset 的值。我正在努力寻找传递价值的方法。
function getUnitCode() {
var x = document.getElementById("UnitCodeDDL");
var unical = x.options[x.selectedIndex].value;
alert(unical);
}
<%
Dim strUnitCode
strUnitCode=Request.Form("UnitCodeDDL")
%>
<SELECT NAME=UnitCodeDDL id=UnitCodeDDL onchange="getUnitCode();javascript: document.forms['VehForm'].submit()">
<OPTION VALUE=''>Please Select UnitCode</OPTION>
<%
Dim objRS , strSQL
Set objRS=Server.CreateObject ("ADODB.Recordset")
strSQL = "SELECT v.unitcode, u.description "
strSQL = strSQL & "FROM " & strBrand & "_vehicle AS v "
strSQL = strSQL & "LEFT JOIN unipos AS u "
strSQL = strSQL & "ON v.unitcode = u.unitcode "
strSQL = strSQL & "WHERE v_code='" & strVCode & "' "
strSQL = strSQL & "GROUP BY v.unitcode;"
objRS.Open strSQL,objConn
Do While Not objRS.EOF
Response.Write "<OPTION VALUE='" & objRS("unitcode") & "'"
if objRS("unitcode")=strUnitCode Then Response.Write " selected "
Response.Write ">"
Response.Write objRS("unitcode") & "</OPTION>"
objRS.MoveNext
Loop
objRS.Close
Set objRS=Nothing
Response.Write "</SELECT>"
%>
<%
Dim strAutoSection
strAutoSection = strAutoSection & "<FORM name='VehForm' METHOD=POST ACTION='selectVeh.asp?brand=" & strBrand & "&VCode=" & strVCode & "&Veh=" & server.htmlencode(strVeh) & "&action=upload' enctype='multipart/form-data'>" & vbCrLf
strAutoSection = strAutoSection & "Upload file:<INPUT TYPE='file' NAME='uploadFile'><input type='submit' value='upload'></FORM>"
strAutoSection = strAutoSection & "<TABLE border=1 cellspacing=1 cellpadding=2>" & vbCrLf
strAutoSection = strAutoSection & "<TR bgcolor='#CCFFCC'>" & vbCrLf
strAutoSection = strAutoSection & "<TH>UNITCODE</TH>" & vbCrLf
strAutoSection = strAutoSection & "<TH>DESCRIPTION</TH>" & vbCrLf
strAutoSection = strAutoSection & "</TR>" & vbCrLf
Dim objRS_auto,strSQL
Set objRS_auto=Server.CreateObject ("ADODB.Recordset")
strSQL = "SELECT v.*, u.description "
strSQL = strSQL & "FROM " & strBrand & "_vehicle AS v "
strSQL = strSQL & "LEFT JOIN unitpos AS u "
strSQL = strSQL & "ON v.unitcode = u.unitcode "
strSQL = strSQL & "WHERE v_code='" & strVCode & "' AND v.unitcode='" & strUnitCode & "' "
objRS_auto.Open strSQL, objConn
%>
我必须在 onchange 事件中从 UnitCodeDDL 获取值,并将其传递给查询中的 strUnitCode 变量。谁能指导我如何解决这个问题?
我怀疑您正在寻找 request.form 对象,但没有在您的表单标签中规定 method=post(您没有显示)
<form method=post>
<select name=myselect>....
</select>
<form>
<% val = request.form("myselect") %>
顺便说一句,您可能希望在代码中使用续行符,并在每行的开头添加空格使其更具可读性。您可能还需要考虑 SQL 注入的危险,除非您希望整个数据库被盗或删除!
strSQL = " SELECT v.unitcode, u.description" & _
" FROM " & strBrand & "_vehicle AS v" & _
" LEFT JOIN unipos AS u" & _
" ON v.unitcode = u.unitcode" & _
" WHERE v_code='" & strVCode & "'" & _
" GROUP BY v.unitcode;"
我需要将所选值从下拉列表传递到 SELECT 查询,并根据传递给页面中显示的相应 table/recordset 的值。我正在努力寻找传递价值的方法。
function getUnitCode() {
var x = document.getElementById("UnitCodeDDL");
var unical = x.options[x.selectedIndex].value;
alert(unical);
}
<%
Dim strUnitCode
strUnitCode=Request.Form("UnitCodeDDL")
%>
<SELECT NAME=UnitCodeDDL id=UnitCodeDDL onchange="getUnitCode();javascript: document.forms['VehForm'].submit()">
<OPTION VALUE=''>Please Select UnitCode</OPTION>
<%
Dim objRS , strSQL
Set objRS=Server.CreateObject ("ADODB.Recordset")
strSQL = "SELECT v.unitcode, u.description "
strSQL = strSQL & "FROM " & strBrand & "_vehicle AS v "
strSQL = strSQL & "LEFT JOIN unipos AS u "
strSQL = strSQL & "ON v.unitcode = u.unitcode "
strSQL = strSQL & "WHERE v_code='" & strVCode & "' "
strSQL = strSQL & "GROUP BY v.unitcode;"
objRS.Open strSQL,objConn
Do While Not objRS.EOF
Response.Write "<OPTION VALUE='" & objRS("unitcode") & "'"
if objRS("unitcode")=strUnitCode Then Response.Write " selected "
Response.Write ">"
Response.Write objRS("unitcode") & "</OPTION>"
objRS.MoveNext
Loop
objRS.Close
Set objRS=Nothing
Response.Write "</SELECT>"
%>
<%
Dim strAutoSection
strAutoSection = strAutoSection & "<FORM name='VehForm' METHOD=POST ACTION='selectVeh.asp?brand=" & strBrand & "&VCode=" & strVCode & "&Veh=" & server.htmlencode(strVeh) & "&action=upload' enctype='multipart/form-data'>" & vbCrLf
strAutoSection = strAutoSection & "Upload file:<INPUT TYPE='file' NAME='uploadFile'><input type='submit' value='upload'></FORM>"
strAutoSection = strAutoSection & "<TABLE border=1 cellspacing=1 cellpadding=2>" & vbCrLf
strAutoSection = strAutoSection & "<TR bgcolor='#CCFFCC'>" & vbCrLf
strAutoSection = strAutoSection & "<TH>UNITCODE</TH>" & vbCrLf
strAutoSection = strAutoSection & "<TH>DESCRIPTION</TH>" & vbCrLf
strAutoSection = strAutoSection & "</TR>" & vbCrLf
Dim objRS_auto,strSQL
Set objRS_auto=Server.CreateObject ("ADODB.Recordset")
strSQL = "SELECT v.*, u.description "
strSQL = strSQL & "FROM " & strBrand & "_vehicle AS v "
strSQL = strSQL & "LEFT JOIN unitpos AS u "
strSQL = strSQL & "ON v.unitcode = u.unitcode "
strSQL = strSQL & "WHERE v_code='" & strVCode & "' AND v.unitcode='" & strUnitCode & "' "
objRS_auto.Open strSQL, objConn
%>
我必须在 onchange 事件中从 UnitCodeDDL 获取值,并将其传递给查询中的 strUnitCode 变量。谁能指导我如何解决这个问题?
我怀疑您正在寻找 request.form 对象,但没有在您的表单标签中规定 method=post(您没有显示)
<form method=post>
<select name=myselect>....
</select>
<form>
<% val = request.form("myselect") %>
顺便说一句,您可能希望在代码中使用续行符,并在每行的开头添加空格使其更具可读性。您可能还需要考虑 SQL 注入的危险,除非您希望整个数据库被盗或删除!
strSQL = " SELECT v.unitcode, u.description" & _
" FROM " & strBrand & "_vehicle AS v" & _
" LEFT JOIN unipos AS u" & _
" ON v.unitcode = u.unitcode" & _
" WHERE v_code='" & strVCode & "'" & _
" GROUP BY v.unitcode;"