灵魂腐蚀 发表于 2015-1-16 22:14:13

ASP教程之使用ASP嵌套JS+SQL Server打造两级连动...

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.value;")&chr(13)
Response.write("if(valuecategory.indexOf("+chr(34)+"无"+chr(34)+")==0){"+chr(13)&_
"D.small_cat.length=1;"&_
"D.small_cat.options.value="+chr(34)+"无"+chr(34)+";"+chr(13)&_
"D.small_cat.options.text="+chr(34)+"**请选择乡村**"+chr(34)+chr(13)&_
"D.small_cat.options.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能做到,例如银行安全控件

爱飞 发表于 2015-1-19 05:35:49

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

透明 发表于 2015-1-27 22:53:13

哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?

飘灵儿 发表于 2015-2-5 15:55:15

Session:这个存储跟客户端会话过程的数据,默认20分钟失效

老尸 发表于 2015-2-12 22:40:12

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

再见西城 发表于 2015-3-3 10:55:35

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。

山那边是海 发表于 2015-3-11 10:35:46

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

不帅 发表于 2015-3-25 20:32:30

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
页: [1]
查看完整版本: ASP教程之使用ASP嵌套JS+SQL Server打造两级连动...