index.asp
Code du programme :
<html>
<tête>
<titre></titre>
<meta content="text/html; charset=gb2312" http-equiv="content-type">
<style type="text/css"><!--
POLICE{font-size:12px}
TD{taille de police : 12px}
UNE{couleur :#333399}
A : survoler{couleur :#FF6600}
--></style>
<script langage="JavaScript" type="text/JavaScript"><!--
fonction funOnload(){
document.all.list_file.src="jscript_city.asp?base=0&sele=0-&elem=Select01";
}
//série pBase, basée sur 0,
//pSele est la valeur de <option
//pEle est le nom du formulaire de niveau suivant
fonction chgSelect(pBase,pSele,pElem){
//Après avoir modifié une liste. Efface les futures valeurs de la liste.
for(i=parseInt(pElem.replace("Select",""));i<=5;i++){
var tmp="000"+i;
var pElem1=eval("document.Form1.Select"+tmp.substr(tmp.length-2));
pElem1.length=1;
pElem1.selectedIndex=0;
}
//JS utilise ASP pour obtenir les données de la base de données afin de mettre à jour la liste subordonnée
document.all.list_file.src="jscript_city.asp?base="+pBase+"&sele="+pSele+"&elem="+pElem;
}
//--></script>
<script id="list_file" langage="JavaScript" type="text/JavaScript" src=""></script>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="2" text="#333333" onload="funOnload();">
<nom du formulaire="Form1">
<select name="Select01" onchange="chgSelect(1,this.options[this.selectedIndex].value,'Select02')">
<option value="">Enregistrer...</option>
</sélectionner>
<select name="Select02" onchange="chgSelect(2,this.options[this.selectedIndex].value,'Select03')">
<option value="">Ville...</option>
</sélectionner>
<select name="Select03" onchange="chgSelect(3,this.options[this.selectedIndex].value,'Select04')">
<option value="">Comté...</option>
</sélectionner>
<select name="Select04" onchange="chgSelect(4,this.options[this.selectedIndex].value,'Select05')">
<option value="">Pays...</option>
</sélectionner>
<select name="Select05">
<option value="">Village...</option>
</sélectionner>
</form>
</body></html>
'jscript_city.asp
Code du programme :
<%
' Niveau du menu déroulant varBase
' ID de base de données varSele de l'élément de menu déroulant sélectionné
' varElem Le nom du formulaire de niveau suivant
varBase=Request.QueryString("base")
varSele=Gauche(Request.QueryString("sele"),InStr(Request.QueryString("sele"),"-")-1)
varElem=Request.QueryString("elem")
varDistName=""
varAutoID=""
Définir conDB=Server.CreateObject("ADODB.CONNECTION")
conDB.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.Mappath("db1.mdb")
sqlCommand="select * from table1 où file1="&varBase&" et file2="&varSele
Définir rsRecord=conDB.Execute(sqlCommand)
sans rsRecord.eof
varDistName=varDistName&chr(34)&rsRecord("filed3")&chr(34)
varAutoID=varAutoID&chr(34)&rsRecord("id")&chr(34)
rsRecord.movenext
Si ce n'est pas rsRecord.Eof alors
varDistName=varDistName&","
varAutoID=varAutoID&","
Fin si
Wend
Response.Write("var varDistName=new Array("&varDistName&")"&vbcrlf)
Response.Write("var varAutoID=new Array("&varAutoID&")"&vbcrlf)
Response.Write("var varElem=eval("&chr(34)&"document.Form1."&varElem&chr(34)&")"&vbcrlf)
Response.Write("varElem.length=varDistName.length+1;"&vbcrlf)
Response.Write("for(var i=0;i<varDistName.length;i++){"&vbcrlf)
Réponse.Write(" varElem.options[i+1].text=varDistName;"&vbcrlf)
Response.Write(" varElem.options[i+1].value=varAutoID+'-'+varDistName;"&vbcrlf)
Response.Write("}"&vbcrlf)
Response.Write("varElem.selectedIndex=0;"&vbcrlf)
%>
db1.mdb
'------------------------------------------------
Village de Huangcuo Zengcuoyu, Siming, Xiamen, Fujian, village de Shuitou, Xihu, Fengze, Quanzhou, Fujian
La base de données de conversion à cinq niveaux ci-dessus est :
'---------------------------------
identifiant déposé1 déposé2 déposé3
1 0 0 Fujian
2 1 1 Xiamen
3 1 1 Quanzhou
4 2 2 Siming
5 3 4 Huangcuo
6 4 5 Village de Tsang Chuo Eu
7 2 3 Fengze
8 3 7 Lac de l'Ouest
9 4 8 Village de Shuitou
'------------------------------------------------
Description de la base de données :
numérotation automatique des identifiants
field1 Le niveau de la liste du menu déroulant (voir le niveau. Vous pouvez définir sa précision. C'est un type numérique)
field2 Le numéro d'identification du niveau précédent (utiliser le type entier long)
file3 Inutile de le préciser (fichier. La longueur dépend de la situation).
Ce programme est passé sous IIS4+WIN2000P+ACCESS2000.