|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了下拉 比来常被的}就是怎样创建B下拉式x(二A),一月之缺了不下十次,其渭要做到B下拉式x(二A)K不困y,可是要和Y料Y合,把Y料的Y料以B下拉式x斫⒕捅仨要加上一c技能了,明天P者也不盘算做二A拥B下拉式x,乾脆间接挑鹑A,再把Y料一同Y合,人人懂得的透一c。
起首先我看看oB下拉式x(三A)的原始程式,等你看懂了之後咱再使用ASP和SQL懋a生B下拉式x(三A):
B下拉式x(三A):
表蚊QmyForm
第一下拉式x蚊Qcolor
色:
t色">t色
S色">S色
G色">G色
第二下拉式x蚊Qfruit
生果:
O果
F
李子
第三下拉式x蚊Qprice
r格:
10元
20元
30元
定x色下拉式x橐一S列,且列L度槿(暗示有三N色)
key=newArray(3);
//定x色下拉式x沃械谝色x橐一S列,且列L度槿(暗示有三N生果),以下依此推
key[0]=newArray(3);
key[1]=newArray(2);
key[2]=newArray(3);
//@重}定x一列是榱嗽指定生果下拉式x中之生果名Qr已把生果名Q
//指定o相P的列索引,@些列索引o法被重}定x成列,榱艘r格下拉式x
//文苎赜弥八x的列值,以是我在此硗庠俣x逐一模一拥年列索引。
key1=newArray(3);
key1[0]=newArray(3);
key1[1]=newArray(2);
key1[2]=newArray(3);
//定x生果下拉式x沃械谝生果x橐一S列,且列L度槿(暗示有三N
//r格),此生果是凫额色下拉式x沃兄谝环N色,以下依此推
key1[0][0]=newArray(3);
key1[0][1]=newArray(3);
key1[0][2]=newArray(3);
//定x生果下拉式x沃械谝生果x橐一S列,且列L度槿(暗示有三N
//r格),此生果是凫额色下拉式x沃兄诙N色,以下依此推
key1[1][0]=newArray(3);
key1[1][1]=newArray(3);
//定x生果下拉式x沃械谝生果x橐一S列,且列L度槿(暗示有三N
//r格),此生果是凫额色下拉式x沃兄谌N色,以下依此推
key1[2][0]=newArray(3);
key1[2][1]=newArray(3);
key1[2][2]=newArray(3);
//指定生果下拉式x中之生果名Q
//t色
key[0][0]="O果";
key[0][1]="F";
key[0][2]="李子";
//S色
key[1][0]="柳丁";
key[1][1]="葡萄柚";
//G色
key[2][0]="芭";
key[2][1]="西瓜";
key[2][2]="子";
//指定r格下拉式x沃懈生果的r格
//O果
key1[0][0][0]="10元"
key1[0][0][1]="20元"
key1[0][0][2]="30元"
//F
key1[0][1][0]="40元"
key1[0][1][1]="50元"
key1[0][1][2]="60元"
//李子
key1[0][2][0]="70元"
key1[0][2][1]="80元"
key1[0][2][2]="90元"
//柳丁
key1[1][0][0]="100元"
key1[1][0][1]="110元"
key1[1][0][2]="120元"
//葡萄柚
key1[1][1][0]="130元"
key1[1][1][1]="140元"
key1[1][1][2]="150元"
//芭
key1[2][0][0]="160元"
key1[2][0][1]="170元"
key1[2][0][2]="180元"
//西瓜
key1[2][1][0]="190元"
key1[2][1][1]="200元"
key1[2][1][2]="210元"
//子
key1[2][2][0]="220元"
key1[2][2][1]="230元"
key1[2][2][2]="240元"
//改色下拉式x沃x值r,|Buildkey函,K㈩色下拉式x沃兄x
//索引值鹘onum,以本例而言,t色0的索引值,S色1的索引
//值,G色2的索引值
functionBuildkey(num)
{
//生果下拉式x沃怂饕付0。
document.myForm.fruit.selectedIndex=0;
//由於改生果下拉式xr,r格下拉式x我脖仨跟著,以是我在此便呼
//叫Buildkey1函,K迫r格下拉式x沃兄x索引值0,暗示不论今朝是何N
//色的生果,r格下拉式x味尸F此生果的第一Nr格
Buildkey1(0);
//@是最PI的步E,在JavaScript中,for(ctr=0;ctr//就等於VBScript中的Forctr=0tokey[num].length,如有不懂的中央建h年夜
//家I一本JavaScript的砜,e例碚f明底下的程式人人容^分明,我
//x了t色之後,此rnum=0(后面已f^了),此rkey[0]的列L度我能够透^
//先前定x得知,key[0].length=3,而生果下拉式x㈤_始改,生果下拉式x沃
//第一x⒆成key[0][0],也就是O果,生果下拉式x沃械诙x⒆成key
//[0][1],也就是F,生果下拉式x沃械谌x⒆成key[0][2],也就是李子,@
//人人懂得了吧!!
for(ctr=0;ctrkey[0].length指定槟壳八吕竭x沃饕列L度。
document.myForm.fruit.length=key[num].length;
}
functionBuildkey1(num)
{
//r格下拉式x沃怂饕付0。
document.myForm.price.selectedIndex=0;
//改r格下拉式x蔚倪x除跟生果下拉式x蜗嚓P以外,跟今朝所x色有P
//例碚f明底下的程式人人容^分明,我x了t色之後,此r
//document.myForm.color.selectedIndex=0(因榧t色是色下拉式x沃兄
//一指怂饕),假如我在生果下拉式x沃羞x的生果是F,此rnum=1,而
//key1[document.myForm.color.selectedIndex][num].length此r成key1
//[0][1].length,之前的定x能够晓得@值是3,而r格下拉式x㈤_始改,r格//下拉式x沃第一x⒆成key[0][1][0],也就是40元,r格下拉式x沃械诙
//x⒆成key[0][1][1],也就是50元,生果下拉式x沃械谌x⒆成key
//[0][1][2],也就是60元,@人人懂得了吧!!
for(ctr=0;ctr由色下拉式x嗡饕〉盟列值;
document.myForm.cost.options[ctr]=newOption(key1[document.myForm.color.selectedIndex][num][ctr],key1[document.myForm.color.selectedIndex][num][ctr]);
}
}
//-->
下面的程式但愿人人用值M往的体例W,我想容^好W,如有任何看不懂的中央能够间接留言告V我,接下砦_始使用ASPcSQLBa生下面那段程式,但愿人人不要因樯厦娴某淌娇床惶丝s,因榈紫碌某淌⒏檠}s,假如人人能⒄流程吸取,我信任不论是B下拉式x(四A)或B下拉式x(五A)都㈦y不倒你了,之以是蒙厦娴姆绞B创建下拉式x问且楣P者X得@例m然比^麻,可是s是比^简单了解的,别的煞N体例P者X得大概出碇缓媒忉以是作T!!
在M进作之前,先我创建三Y料表,一是colorY料表,一是fruitY料表,一是priceY料表,Y料表架以下:
三Y料表热莘e以下所示:
人人能够看的到fruitY料表是以COLORID谖慌ccolorY料表构成P,而priceY料表又以FRUITID谖慌cfruitY料表构成P,我想要Y料是以上面的体例沓尸F怎样做呢?
t色→O果→10元
t色→O果→20元
t色→O果→30元
t色→F→40元
t色→F→50元
t色→F→60元
t色→李子→70元
t色→李子→80元
t色→李子→90元
S色→柳丁→100元
S色→柳丁→110元
S色→柳丁→120元
S色→葡萄柚→130元
S色→葡萄柚→140元
S色→葡萄柚→150元
G色→芭贰160元
G色→芭贰170元
G色→芭贰180元
G色→西瓜→190元
G色→西瓜→200元
G色→西瓜→210元
G色→子→220元
G色→子→230元
G色→子→240元
我用JOIN的体例⑷Y料表P起,JOIN的t是把fruitY料表中COLORID谖恢档褥colorY料表中ID谖坏馁Y料且priceY料表中FRUITID谖恢档褥fruitY料表中ID谖坏馁Y料JOIN起怼
<%
myDSN="Provider=SQLOLEDB;DataSource=Jackal;InitialCatalog=pubs;UserID=sa;Password="
strSQL="selectcolor.color,fruit.fruit,price.costfromcolorjoinfruitoncolor.ID=fruit.COLORIDjoinpriceonprice.FRUITID=fruit.IDorderbycolor.ID"
Setmy_conn=Server.CreateObject("ADODB.Connection")
my_conn.openmyDSN
setrs=my_conn.execute(strSQL)
DOUNTILrs.eof
Response.Writers(0)&"→"&rs(1)&"→"&rs(2)&"<br>"
rs.movenext
LOOP
rs.close
setrs=nothing
my_conn.close
setmy_conn=nothing
%>
就下面的Y料架而言我能够很分明了看到,t色→O果→10元相於是key1[0][0][0]@列索引的值,而G色→子→240元就相於是key1[2][2][2]@列索引的值,而t色→O果也相於是key[0][0]@列索引的值,注重一是key,一是key1,也就是我在文章一_始告V你楹我x列值的缘故原由,OK,看了Y料的架之後最麻┑氖虑砹,要怎样把@拥馁Y料架D成列,并且要和Y料作Y合呢?底下@一段程式大概有c}s,不^我M量解分明:
DynamicSelectBox.asp
ByRef。间接^看底下副程式的部分
myDSN="Provider=SQLOLEDB;DataSource=Jackal;InitialCatalog=pubs;UserID=sa;Password="
strSQL="selectcolor.color,fruit.fruit,price.costfromcolorjoinfruitoncolor.ID=fruit.COLORIDjoinpriceonprice.FRUITID=fruit.IDorderbycolor.ID"
calllistmaker(myDSN,strSQL,colorlist,"color",fruitlist,"fruit",pricelist,"price",pubevent,pubfun,"myForm")
%>
色:
生果:
r格:
-->
"
使用fruitlist字串斫⒌诙下拉式x蔚Html原始a。
fruitlist=""
使用pricelist字串斫⒌谌下拉式x蔚Html原始a。
pricelist=""
在@e初始某些抵,作底下绦羞算r之旗酥怠
loopcounter=0
lastvalue=rs(0)
lastvalue2=rs(1)
redimtempArray(1)
thisgroupcount代表某N色共有N生果
thisgroupcount=0
thissubgroupcount代表某N生果共有Nr格,生果Qrthissubgroupcountw零,K从头
累加。
thissubgroupcount=0
howmanygroups代表共有N色
howmanygroups=0
howmanysubgroups代表共有N生果,色Qrhowmanysubgroupsw零,K从头
累加。
howmanysubgroups=0
DOUNTILrs.eof
thisvalue=rs(0)
thisvalue2=rs(1)
thisvalue3=rs(2)
假如lF生果名Q改,并且今朝生果是某N色的第一N生果r,比如:t色→O果
或:S色→柳丁r就在Script中加上色擞(榱俗人人更简单Script^隔_
),然後再⑺Q定x到key列值,
接著再定xkey1[第N色][第N生果]之列L度。
ifthisvalue2lastvalue2then
Ifhowmanysubgroups=0then
tempSTR1=tempSTR1&"//"&lastvalue&vbcrlf
tempSTR2=tempSTR2&"//"&lastvalue&vbcrlf
endIf
tempSTR2=tempSTR2&"key1["&howmanygroups&"]["&howmanysubgroups&
"]=newArray("&thissubgroupcount&");"&vbcrlf
tempSTR1=tempSTR1&"key["&howmanygroups&"]["&howmanysubgroups&
"]="""&lastvalue2&""";"&vbCRLF
howmanysubgroups=howmanysubgroups+1
thissubgroupcount=0
lastvalue2=thisvalue2
endif
绦薪Y果以下
//t色
key[0][0]="O果";
key[0][1]="F";
key[0][2]="李子";
//S色
key[1][0]="柳丁";
key[1][1]="葡萄柚";
//G色
key[2][0]="芭";
key[2][1]="西瓜";
key[2][2]="子";
//t色
key1[0][0]=newArray(3);
key1[0][1]=newArray(3);
key1[0][2]=newArray(3);
//S色
key1[1][0]=newArray(3);
key1[1][1]=newArray(3);
//G色
key1[2][0]=newArray(3);
key1[2][1]=newArray(3);
key1[2][2]=newArray(3);
假如lF色名Q改,就定xkey[第N色]列值,
接著再定xkey1[第N色]之列L度,重}定x的缘故原由在之前已跟人人f^了,然
後howmanygroups(色N)值加一,K⑺N抵(thisgroupcount)w零
ifthisvaluelastvaluethen
tempSTR=tempSTR&"key["&howmanygroups&"]=newArray("&howmanysubgroups&");"&_
vbcrlf
tempSTR=tempSTR&"key1["&howmanygroups&"]=newArray("&howmanysubgroups&");"&_
vbcrlf
thisgroupcount=0
howmanygroups=howmanygroups+1
howmanysubgroups=0
endif
绦薪Y果以下
key=newArray(3);
key1=newArray(3);
key[0]=newArray(3);
key1[0]=newArray(3);
key[1]=newArray(2);
key1[1]=newArray(2);
key[2]=newArray(3);
key1[2]=newArray(3)
假如thisgroupcount=0代表今朝色改,此r㈩色名Q到color下拉式x沃
ifthisgroupcount=0then
colorlist=colorlist&""&thisvalue&""&vbcrlf
endif
假如thissubgroupcount=0代表今朝生果改,此r在key1[第N色][第N生果][第
Nr格]列值前加下水果名Q擞,人人更简单⑺Qcr格^隔_怼
ifthissubgroupcount=0then
tempSTR3=tempSTR3&"//"&lastvalue2&vbcrlf
endif
定xkey1[第N色][第N生果][第Nr格]列值。
tempSTR3=TempSTR3&"key1["&howmanygroups&"]["&howmanysubgroups&"]["&thissubgroupcount&"]="""&thisvalue3&""";"&vbCRLF
绦薪Y果:
//l果
key1[0][0][0]="10元";
key1[0][0][1]="20元";
key1[0][0][2]="30元";
//F
key1[0][1][0]="40元";
key1[0][1][1]="50元";
key1[0][1][2]="60元";
//李子
key1[0][2][0]="70元";
key1[0][2][1]="80元";
key1[0][2][2]="90元";
//柳丁
key1[1][0][0]="100元";
key1[1][0][1]="110元";
key1[1][0][2]="120元";
//葡萄柚
key1[1][1][0]="130元";
key1[1][1][1]="140元";
key1[1][1][2]="150元";
//芭
key1[2][0][0]="160元";
key1[2][0][1]="170元";
key1[2][0][2]="180元";
//西瓜
key1[2][1][0]="190元";
key1[2][1][1]="200元";
key1[2][1][2]="210元";
//子
key1[2][2][0]="220元";
key1[2][2][1]="230元";
key1[2][2][2]="240元";
假如今朝是第一N色,并且生果名Q正在改,就生果名Q到fruit下拉式x沃
ifhowmanygroups=0then
Ifthissubgroupcount=0then
fruitlist=fruitlist&""&thisvalue2&""&vbcrlf
endif
EndIf
假如今朝是第一N色,并且是第一N生果,就r格到price下拉式x巍
ifhowmanygroups=0then
ifhowmanysubgroups=0then
pricelist=pricelist&""&thisvalue3&""&vbcrlf
endif
Endif
thisgroupcount=thisgroupcount+1
thissubgroupcount=thissubgroupcount+1
lastvalue=thisvalue
loopcounter=loopcounter+1
rs.movenext
LOOP
e忘了最後一key[第N色]和key1[第N色]的列L度不决x。
tempSTR=tempSTR&"key["&howmanygroups&_
"]=newArray("&howmanysubgroups+1&");"&_
vbcrlf
tempSTR=tempSTR&"key1["&howmanygroups&_
"]=newArray("&howmanysubgroups+1&");"&_
vbcrlf
e忘了最後一key[第N色][第N生果]和key1[第N色][第N生果]的列L
度不决x。
tempSTR2=TempSTR2&"key1["&howmanygroups&"]["&howmanysubgroups&"]=newArray("&thissubgroupcount&");"&_
vbcrlf
tempSTR1=TempSTR1&"key["&howmanygroups&"]["&howmanysubgroups&"]="""&lastvalue2&""";"&vbCRLF
tempSTR=tempSTR&TempSTR1&TempSTR2&tempSTR3
color下拉式x巫饕Y尾
colorlist=colorlist&""
fruit下拉式x巫饕Y尾
fruitlist=fruitlist&""
price下拉式x巫饕Y尾
pricelist=pricelist&""
一_始的key和key1列也不要忘定x了。
myevent=vbcrlf&"key=newArray("&howmanygroups+1&");"
myevent=myevent&vbcrlf&"key1=newArray("&howmanygroups+1
myevent=myevent&");"&vbcrlf&tempSTR
半途而废,能够P]Y料了。
rs.close
setrs=nothing
my_conn.close
setmy_conn=nothing
先a生Buildkey副程式,@一c都不困y,道理在下面已解^了,P者不再述,绦薪Y果:
functionBuildkey(num)
{
Buildkey1(0);
document.myForm.fruit.selectedIndex=0;
for(ctr=0;ctr
tempSTR=vbcrlf&"functionBuildkey"&"(num)"&vbcrlf
tempSTR=tempSTR&"{"&vbcrlf
tempSTR=tempSTR&"Buildkey1(0);"&vbcrlf
tempSTR=tempSTR&"document."&myForm&"."
tempSTR=tempSTR&listname2&".selectedIndex=0;"&vbcrlf
tempSTR=tempSTR&"for(ctr=0;ctr
再人人看看最後的Y果:
色:
t色
S色
G色
生果:
l果
F
李子
r格:
10元
20元
30元
送出">
t色
key[0][0]="O果";
key[0][1]="F";
key[0][2]="李子";
//S色
key[1][0]="柳丁";
key[1][1]="葡萄柚";
//G色
key[2][0]="芭";
key[2][1]="西瓜";
key[2][2]="子";
//t色
key1[0][0]=newArray(3);
key1[0][1]=newArray(3);
key1[0][2]=newArray(3);
//S色
key1[1][0]=newArray(3);
key1[1][1]=newArray(3);
//G色
key1[2][0]=newArray(3);
key1[2][1]=newArray(3);
key1[2][2]=newArray(3);
//l果
key1[0][0][0]="10元";
key1[0][0][1]="20元";
key1[0][0][2]="30元";
//F
key1[0][1][0]="40元";
key1[0][1][1]="50元";
key1[0][1][2]="60元";
//李子
key1[0][2][0]="70元";
key1[0][2][1]="80元";
key1[0][2][2]="90元";
//柳丁
key1[1][0][0]="100元";
key1[1][0][1]="110元";
key1[1][0][2]="120元";
//葡萄柚
key1[1][1][0]="130元";
key1[1][1][1]="140元";
key1[1][1][2]="150元";
//芭
key1[2][0][0]="160元";
key1[2][0][1]="170元";
key1[2][0][2]="180元";
//西瓜
key1[2][1][0]="190元";
key1[2][1][1]="200元";
key1[2][1][2]="210元";
//子
key1[2][2][0]="220元";
key1[2][2][1]="230元";
key1[2][2][2]="240元";
functionBuildkey(num)
{
Buildkey1(0);
document.myForm.fruit.selectedIndex=0;
for(ctr=0;ctr
其@程式fy不y,重c是在列索引的^念,同拥挠}能够在^间接提出,但愿人人看了@篇文章之後,不要再我B下拉式x(二A)怎样做了!!祝人人身w安康,Coding快贰
asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了! |
|