|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!js|server|sql|下拉跟着收集手艺的敏捷开展,愈来愈多的电子商务网站也应运而生。而在构建一个功效壮大的电子商务网站常常少不了供应网上注册功效给客户自行注册这个模块,为了尽量便利客户填写信息,我们常常要用到下拉框供客户选择,出格是两级连动下拉框最为经常使用。
再说,自己昔日发明CSDN论坛上也常常有网友发问这个成绩,就是,必要一个两级连动下拉框,第一个显现省分称号,第二个显现响应的乡村名。为懂得答这个成绩,我出格写这篇文章,但愿能对必要这方面材料的网友有所匡助。
起首,我们先来计划数据库(SQLServer7.0)
●数据库名:DB_ProvinceCat
●表名:1)Tb_Province2)Tb_City
申明:表Tb_Province用来寄存省分称号;表Tb_City用来寄存响应的乡村称号。
●字段名的计划
1)表Tb_Province的字段有省分ID号(ProvinceCatID)、省分代码(ProvinceCode)、省分称号(ProvinceName),表1给出了示例:
ProvinceCatIDProvinceCodeProvinceName
101北京市
202上海市
303天津市
404重庆市
505广东省
606浙江省
707福建省
808海南省
909江苏省
表1
2)表Tb_City的字段有乡村ID号(CityID)、乡村代码(CityCode)、乡村称号(CityName),表2给出了示例:
CityIDCityCodeCityName
101001北京市
202001上海市
303001天津市
404001重庆市
505001广州市
605002深圳市
705003珠海市
805004茂名市
905005中山市
1006001杭州市
1106002温州市
1207001福州市
1307002厦门市
1408001海口市
1508002三亚市
1608003万宁市
1708004五指山市
1809001南京市
1909002姑苏市
表2
申明:这里要注重的一点就是,身份代码要对应乡村代码的头两位。
其次,写代码。上面是一个完全的源代码:
TwoLevel.asp
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<metaname="GENERATOR"content="MicrosoftFrontPage4.0">
<metaname="ProgId"content="FrontPage.Editor.Document">
<title>下拉列暗示例</title>
</head>
<%
dimconn
dimconnstr
onerrorresumenext
setconn=server.CreateObject("ADODB.connection")
connstr="driver={SQLServer};server=wen;uid=sa;pwd=;database=DB_ProvinceCat"
conn.Openconnstr
setRs=server.createobject("ADODB.recordset")
Rs.CursorLocation=adUseClient
SQL="Select*fromTb_Province"
Rs.openSQL,conn,1,1
ifNotRs.Eofthen
DimstrJScript
strJScript=""
Response.Write("<SCRIPTlanguage=JavaScript>")&chr(13)
Response.Write("functionsetcategory(S){")&chr(13)
Response.Write("S.category.length="+Cstr(Rs.Recordcount+1)+";")&chr(13)
dimi
i=0
WhileNotRs.Eof
strJScript=strJScript+"S.category.options["+CStr(i)+"].value="+chr(34)+Trim(Rs("ProvinceCode"))+chr(34)+";"+chr(13)
strJScript=strJScript+"S.category.options["+CStr(i)+"].text="+chr(34)+Trim(Rs("ProvinceName"))+chr(34)+";"+chr(13)
i=i+1
Rs.MoveNext
Wend
Response.write(strJScript)
Response.Write("S.category.options["+CStr(i)+"].value="+chr(34)+"无"+chr(34)+";"+chr(13))
Response.Write("S.category.options["+CStr(i)+"].text="+chr(34)+"**请选择省分**"+chr(34)+";"+chr(13))
Response.Write("S.category.options["+Cstr(i)+"].selected=true;"+chr(13))
Response.Write("}")&chr(13)
Rs.Close
SetRs=Nothing
endif
setRs=server.createobject("ADODB.recordset")
Rs.CursorLocation=adUseClient
SQL="SelectNum=Count(*),Tb_Province.ProvinceCodeFromTb_Province,Tb_CitywhereTb_Province.ProvinceCode=substring(Tb_City.CityCode,1,2)groupbyTb_Province.ProvinceCodeorderbyTb_Province.ProvinceCode"
Rs.openSQL,conn,1,1
ifNotRs.Eofthen
dimNum(30),j
j=0
DoWhileNotRs.Eof
Num(j)=Rs("Num")
j=j+1
Rs.MoveNext
Loop
endif
Rs.Close
setRs=Nothing
SQL=""
setRs=server.createobject("ADODB.recordset")
Rs.CursorLocation=adUseClient
SQL="SelectTb_Province.*,Tb_City.*FromTb_Province,Tb_CitywhereTb_Province.ProvinceCode=substring(Tb_City.CityCode,1,2)orderbyTb_Province.ProvinceCode"
Rs.openSQL,conn,1,1
j=0
ifNotRs.Eofthen
Response.Write("functionsetsmall_cat(D){")&chr(13)
Response.Write("varvaluecategory=D.category.options[D.category.selectedIndex].value;")&chr(13)
Response.write("if(valuecategory.indexOf("+chr(34)+"无"+chr(34)+")==0){"+chr(13)&_
"D.small_cat.length=1;"&_
"D.small_cat.options[0].value="+chr(34)+"无"+chr(34)+";"+chr(13)&_
"D.small_cat.options[0].text="+chr(34)+"**请选择乡村**"+chr(34)+chr(13)&_
"D.small_cat.options[0].selected=true;"+chr(13)&_
"}")
i=0
dimNextLevel,UpCatCode,overflow
NextLevel="N"
overflow="N"
strJScript=""
DoWhileNotRs.Eof
UpcateCode=Trim(Rs("ProvinceCode"))
ifNextLevel="N"then
strJScript="elseif(valuecategory.indexOf("+chr(34)+UpcateCode+chr(34)+")==0){"+chr(13)
strJScript=strJScript+"D.small_cat.length="+Cstr(Num(j))+";"+chr(13)
j=j+1
NextLevel="Y"
endif
strJScript=strJScript+"D.small_cat.options["+CStr(i)+"].value="+chr(34)+Trim(Rs("CityCode"))+chr(34)+";"+chr(13)
strJScript=strJScript+"D.small_cat.options["+CStr(i)+"].text="+chr(34)+Trim(Rs("CityName"))+chr(34)+";"+chr(13)
i=i+1
Rs.MoveNext
ifUpcateCodeTrim(Rs("ProvinceCode"))then
overflow="Y"
endif
ifoverflow="Y"then
Response.write(strJScript+"}")
strJScript=""
overflow="N"
NextLevel="N"
i=0
endif
Loop
Response.Write("}</Script>")&chr(13)
Rs.Close
SetRs=Nothing
endif
Conn.close
setconn=nothing
%>
<bodyonload=setcategory(document.select);setsmall_cat(document.select)>
<Formname="select"method="POST"action="#">
<center>
<Table>
<TR><td>请选择:</td>
<TD><SELECTonchange=setsmall_cat(document.select)name=categorysize="1"></SELECT><SELECTname=small_catsize="1"></SELECT></TD>
</TR>
</Table></center>
</Form>
</body>
</html>
第三,举行代码调试。
本程序在WIN2000+IIS+SQLServer7.0情况下调试经由过程。
优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件 |
|