index.asp
Код программы:
<html>
<голова>
<title></title>
<meta content="text/html; charset=gb2312" http-equiv="content-type">
<style type="text/css"><!--
ШРИФТ{размер шрифта:12 пикселей}
ТД{размер шрифта:12 пикселей}
А {цвет: #333399}
A:hover{color:#FF6600}
--></стиль>
<script Language="JavaScript" type="text/JavaScript"><!--
функция funOnload(){
document.all.list_file.src="jscript_city.asp?base=0&sele=0-&elem=Select01";
}
//серия pBase, основанная на 0,
//pSele — это значение <option
//pEle — имя формы следующего уровня
функция chgSelect(pBase,pSele,pElem){
//После изменения списка. Очищает будущие значения списка.
for(i=parseInt(pElem.replace("Select",""));i<=5;i++){
вар tmp="000"+я;
var pElem1=eval("document.Form1.Select"+tmp.substr(tmp.length-2));
pElem1.length=1;
pElem1.selectedIndex=0;
}
//JS использует ASP для получения данных из базы данных для обновления подчиненного списка
document.all.list_file.src="jscript_city.asp?base="+pBase+"&sele="+pSele+"&elem="+pElem;
}
//--></script>
<script id="list_file" Language="JavaScript" type="text/JavaScript" src=""></script>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="2" text="#333333" onload="funOnload();">
<имя формы="Форма1">
<select name="Select01" onchange="chgSelect(1,this.options[this.selectedIndex].value,'Select02')">
<option value="">Сохранить...</option>
</выбрать>
<select name="Select02" onchange="chgSelect(2,this.options[this.selectedIndex].value,'Select03')">
<option value="">Город...</option>
</выбрать>
<select name="Select03" onchange="chgSelect(3,this.options[this.selectedIndex].value,'Select04')">
<option value="">Округ...</option>
</выбрать>
<select name="Select04" onchange="chgSelect(4,this.options[this.selectedIndex].value,'Select05')">
<option value="">Страна...</option>
</выбрать>
<select name="Выбрать05">
<option value="">Деревня...</option>
</выбрать>
</форма>
</body></html>
'jscript_city.asp
Код программы:
<%
' Уровень раскрывающегося меню varBase
' varSele идентификатор базы данных выбранного пункта раскрывающегося меню
' varElem Имя формы следующего уровня
varBase=Request.QueryString("base")
varSele=Left(Request.QueryString("sele"),InStr(Request.QueryString("sele"),"-")-1)
varElem=Request.QueryString("elem")
varDistName=""
varAutoID=""
Set conDB=Server.CreateObject("ADODB.CONNECTION")
conDB.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.Mappath("db1.mdb")
sqlCommand="select * from table1, где filed1="&varBase&" и filed2="&varSele
Установите rsRecord=conDB.Execute(sqlCommand)
, пока не rsRecord.eof
varDistName=varDistName&chr(34)&rsRecord("filed3")&chr(34)
varAutoID=varAutoID&chr(34)&rsRecord("id")&chr(34)
rsRecord.movenext
Если не rsRecord.Eof Тогда
varDistName=varDistName&","
varAutoID=varAutoID&","
Конец, если
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)
Response.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
'------------------------------------------------
Деревня Хуанцо Цзэнцоюй, Сымин, Сямэнь, Фуцзянь, деревня Шуйтоу, Сиху, Фэнцзе, Цюаньчжоу, Фуцзянь.
Вышеупомянутая пятиуровневая база данных преобразования:
'----------------------------------
идентификатор файла1 поля2 поля3
1 0 0 Фуцзянь
2 1 1 Сямэнь
3 1 1 Цюаньчжоу
4 2 2 Сымин
5 3 4 Хуанцо
6 4 5 Деревня Цанг Чуо Ю
7 2 3 Фэнцзе
8 3 7 Западное озеро
9 4 8 Деревня Шуйтоу
'------------------------------------------------
Описание базы данных:
автоматическая нумерация идентификаторов
filed1 Уровень списка раскрывающегося меню (см. уровень. Вы можете установить его точность. Это числовой тип)
filed2 Идентификатор предыдущего уровня (используйте длинный целочисленный тип)
filed3 Само собой разумеется (файл. Длина зависит от ситуации.
Эта программа прошла под IIS4+WIN2000P+ACCESS2000).