100分在线等,关于用户选择下拉框某项时,生成另一个下拉框opition的问题~~~!!

jiudon 2005-11-08 08:34:47
两个下拉框, 当用户选中第一个下拉框的某项值时, 拿该值到DB中搜索出第二个下拉框的内容显示到页面供用户选择,由于数据比较多,不希望在页面加载时,就把第二个下拉框的值给检索出来,请给出解决思路(最好有代码或者相关的例子代码!!)
...全文
217 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
diyager 2005-11-21
  • 打赏
  • 举报
回复
第一个下拉的值是定的所以不说了
第二个如下

<Select Name="***">
<%
IF Request("A")<>"" Then------------这就是判断一下是不是有第一下拉传送的值
Call Sel()
End IF
%>
<option value="">请选择</option>
</select>

<%

Function Sel()
Dim Tempstr
*******数据库连接
IF Not Rs.EOF Then
A = Rs("A")
End IF
Tempstr = "<option value="&A&">"&A&"</option>"
Sel = Tempstr
Function

%>
mgzhenhong 2005-11-21
  • 打赏
  • 举报
回复
哦 错了

上面的index.asp 的 head中 是js代码 忘记了

你自己前后标注一下
<Script>
</Script>
mgzhenhong 2005-11-21
  • 打赏
  • 举报
回复
理论上不难,下面的是我直接刚写的,没有调试.
大概不会有错吧 主要看原理 明白了就可以自己写

数据库A
ID Name
1 张三
2 李四

数据库B
ID Record
1 ***
1 XXX
2 ○○○
1 PPP
2 TTTT

--------index.asp----------主页面-----
<!--#include file="conn.asp"-->
<HTML>
<HEAD>
function MyFunction(){
this.xmlUrl="http://" + location.host + "/xml.asp"
}
var F = new MyFunction;
F.GetSel=function(v,o){
if(o.hasChildNodes()){for(i=o.options.length;i>=0;i--){o.options.remove(i);}}//清空Sel_2
var XML=ActiveXObject("MSXML");
try{XML.URL=F.xmlUrl+"action="+v};
catch(e){alert('下载xml文档失败!');return}
var oRoot=XML.root;
if(!oRoot.children){return}
for(i=0;i<oRoot.children.length;i++){
var NewOption = document.createElement("option")
NewOption.innerText = oRoot.children.item(i).text;
o.options.add(NewOption);
}
}
</HEAD>
<BODY>
<%
SET RS=Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM A"
RS.Open sql,CONN,1,1
Response.write "<SELECT ID='Sel_1' OnChange='F.GetSel(this.options[SelectedIndex].value,Sel_2)'>"
DO WHILE NOT (RS.BOF OR RS.EOF)
Response.write "<OPTION VALUE=" & RS("ID") & ">" & RS("Name") & "</OPTION>"
RS.MoveNext
LOOP
&>
RS.Close
</SELECT>
<SELECT ID="Sel_2">
</SELECT>
</BODY>
</HTML>
--------xml.asp------------用于生成xml文档-----
<?xml version="1.0" encoding="gb2312" ?>
<!--#include file="conn.asp"-->
<%
Action = Request.QueryString("action")
sql = "SELECT * FROM B WHERE ID=" & Action
SET RS=Server.CreateObject("ADODB.RecordSet")
RS.Open sql,CONN,1,1
Response.write "<Sel>"
DO WHILE NOT (RS.BOF OR RS.EOF)
Response.write "<options>" & RS("Record") & "</options>"
RS.MoveNext
LOOP
Response.write "</Sel>"
RS.Close
%>
mojide 2005-11-21
  • 打赏
  • 举报
回复
mark2
DerryZhang 2005-11-21
  • 打赏
  • 举报
回复
Mark~~
jiudon 2005-11-08
  • 打赏
  • 举报
回复
哦,好的,我试试看方法一!
thinkming 2005-11-08
  • 打赏
  • 举报
回复
没有代码只有思路


一.方法ASP+HTML
1首先打开页面就装载好第一个<option>值
2当用户选择第一个<option>值时传入页面(如OPtion.asp?optionvalue=optionvalue),同时使用 hidden或其它方法标识用户是选择<option>值后打开页面的,这样就可以对第二个<option>进行读取数据库筛选了

二.方法ASP+XMLHTTP+JAVASCRIPT
此方法可以使用无刷新的原理就是
当用户选择第一个<option>值触发javascript事件(将第一个<option>传入(如OptionXML?optionvalue=optionvalue)),再利用xmlhttp读取其内容就可以.

三.利用框架
这种方法不太实际就是利用父窗和子窗相互进行传值,原理不是建议楼主不采用这种方法
世界因你而小 2005-11-08
  • 打赏
  • 举报
回复
应该是二级联动吧?
jiudon 2005-11-08
  • 打赏
  • 举报
回复
楼上的我已经实现了,由于数据量大,效果不好,每次加载的时候要等十几秒, 所以想在用户选择了大类后再去获得小类的具体内容, 明天项目要评审了,很着急~~~呜呜!!
gdhyj 2005-11-08
  • 打赏
  • 举报
回复
我原来的做法是先页面装载时把所有的数据读入到javascript的数组变量中,然后选下拉框时触发一个事件,筛选那数组里符合条件的值添加到另一个下拉框里,如果需要我要晚上回到家里的机子才有代码
jiudon 2005-11-08
  • 打赏
  • 举报
回复
另外小声的问问:
<% ... %> & <script>...</script> 之间的代码有什么不同?!
starytx 2005-11-08
  • 打赏
  • 举报
回复
查数据库呀!晕
jiudon 2005-11-08
  • 打赏
  • 举报
回复
楼上的没有办法来实现我要的效果,有没有办法当用户选择了第一个下拉框的时候再去DB中获得第二个下拉框的内容?!
我搜索了一下,也就是“下拉框的联动”吧! 有没有简单点的方法(不能刷新)!
starytx 2005-11-08
  • 打赏
  • 举报
回复
选择了第一个值后查询数据库,搜到结果后,用for循环插入到第二各中
<%for i=1 to rs.recordcount%>
<option value=<%=rs("要插入的列")%>><%=rs("要插入的列")%></option>
<%next%>
jiudon 2005-11-08
  • 打赏
  • 举报
回复
下拉框的机联, 在用户选择了第一个下拉框后,从db中检索第二个下拉框的内容,然后显示!
tigerwen01 2005-11-08
  • 打赏
  • 举报
回复
楼主想要表达的意思请说明清楚点

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧