有一个2级的。 你自己改改吧<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!--#include file="adofunctions.asp"--> <html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <script language="javascript"> <!--function t2(){ document.all("lb2").length=0; var objSelect = document.myForm.lb2;<% strsql="select * from lb2 where 1=1" set objrslb2=getsqlrecordset(strsql,"../dt/db.mdb","lb2") if not objrslb2.eof then do %> if( <%=objrslb2("lb1")%> == myForm.lb1.value ){ var strname='<%=objrslb2("lb2")%>'; var strvalue=<%=objrslb2("id")%>; var objOption = new Option(strname,strvalue); objSelect.options[objSelect.options.length] = objOption; } <% objrslb2.movenext if objrslb2.eof then exit do end ifloop end if %> }//--> </script> <title>无标题文档</title> </head><body> <form action="lb3.asp" method="post" name="myForm"> <table align="center"> <tr><td>添加二级类别:</td></tr> <tr> <td> <input type="hidden" name="l" value="add"> <select name="lb1" onchange="t2()"> <% strsql="select * from lb1 where 1=1" set objrs=getsqlrecordset(strsql,"../dt/db.mdb","lb1") if not objrs.eof then do %> <option value="<%=objrs("id")%>"><%=objrs("lb1")%></option> <% objrs.movenext if objrs.eof then exit do end if loop end if %> </select> <% 'response.End() %> <select name="lb2"> <% strsql="select * from lb1 where 1=1" set objrs1=getsqlrecordset(strsql,"../dt/db.mdb","lb1") if not objrs1.eof then lb1=objrs1("id") strsql="select * from lb2 where lb1='"& lb1 &"'"response.Write "<script>alert('"+strsql +"');</script>" set objrs=getsqlrecordset(strsql,"../dt/db.mdb","lb2")if not objrs.eof then do %> <option value="<%=objrs("id")%>"><%=objrs("lb2")%></option> <% objrs.movenext if objrs.eof then exit do end if loop end if end if %> </select><input name="lb3" type="text" maxlength="50"><input type="submit" value="提交"> </td> </tr> </table> </form> </body> </html>
<% '三级下拉框连动 ' '数据库:location '表 loaction 所在地表 ' 字段 ' lid ' loactionname 名字 ' code 代码 ' loactionid 省 ' districtid 地区 ' villageid 县区 ' '数据库样式 'loactionname code loactionid districtid villageid '河北省 130000 13 00 00 '石家庄市 130100 13 01 00 '长安区 130101 13 01 01 %> <html> <head> <title>List</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <% dim conn dim rs dim sql dim count dim rs1 dim sql1 dim rs2 dim sql2 dim count2 set conn=server.createobject("adodb.connection") conn.open"provider=sqloledb;data source=192.168.0.33;uid=;pwd=;database=location;" sql = "select RTRIM(left(code,4)) as bm,loactionname,loactionid from loaction where districtid<>00 and villageid=00 order by lid asc" set rs = conn.execute(sql) %> <script language = "javascript"> var onecount; onecount=0; subcat = new Array(); <% count = 0 do while not rs.eof %> subcat[<%=count%>] = new Array("<%= trim(rs("loactionname"))%>","<%= trim(rs("loactionid"))%>","<%= trim(rs("bm"))%>"); <% count = count + 1 rs.movenext loop rs.close set rs=nothing %> onecount=<%=count%>; function changelocation(locationid) { document.myform.smalllocation.length = 0; var locationid=locationid; var i; document.myform.smalllocation.options[0] = new Option('==所选城市的地区==',''); for (i=0;i < onecount; i++) { if (subcat[i][1] == locationid) { document.myform.smalllocation.options[document.myform.smalllocation.length] = new Option(subcat[i][0], subcat[i][2]); } } } </script> <!----> <% sql2 = "select RTRIM(left(code,4)) as bm,loactionname,villageid from loaction where districtid<>00 and villageid<>00 order by fid asc" set rs2 = conn.execute(sql2) %> <script language = "javascript"> var onecount2; onecount2=0; subcat2 = new Array(); <% count2 = 0 do while not rs2.eof %> subcat2[<%=count2%>] = new Array("<%= trim(rs2("loactionname"))%>","<%= trim(rs2("bm"))%>","<%= trim(rs2("villageid"))%>"); <% count2 = count2 + 1 rs2.movenext loop rs2.close set rs2=nothing
%> onecount2=<%=count2%>; function changelocation2(villageid) { document.myform.village.length = 0; . var villageid=villageid; var j; document.myform.village.options[0] = new Option('==所选地区的县区==',''); for (j=0;j < onecount2; j++) { if (subcat2[j][1] == villageid) { document.myform.village.options[document.myform.village.length] = new Option(subcat2[j][0], subcat2[j][2]); } } } </script> </head> <body> <form name="myform" method="post"> 分类:<select name="biglocation" onChange="changelocation(document.myform.biglocation.options[document.myform.biglocation.selectedIndex].value)" size="1"> <option selected>请选择你所在的省份</option> <% sql1 = "select * from loaction where districtid=00 and villageid=00 order by fid asc" set rs1 = conn.Execute (sql1) do while not rs1.eof %> <option value="<%=trim(rs1("loactionid"))%>"><%=trim(rs1("loactionname"))%></option> <% rs1.movenext loop rs1.close set rs1 = nothing conn.Close set conn = nothing %> </select> <select name="smalllocation" onChange="changelocation2(document.myform.smalllocation.options[document.myform.smalllocation.selectedIndex].value)"> <option selected value="">==所有地区==</option> </select> <select name="village" size="1"> <option selected>==所有县区==</option> </select> </form> </body> </html> ***********************************************上面这个有问题呀,第三个下拉列表不动~~ 55555
2、省的ONCHANGE事件触发,读取当前省下面的市,对OPTIONS进行操作,初始市列表
3、市的ONCHANGE事件触发,读取省、市条件下的区,对OPTIONS进行操作,初始区列表
注意:每取一个的时候,把得到的列表用数组或者其他方式存在变量里,这样已经取过的就不用再到服务器端取了
<asp:dropdownlist id="DDL_Root" runat="server"></asp:dropdownlist>
<asp:dropdownlist id="DDL_Trunk" runat="server"></asp:dropdownlist>
<asp:dropdownlist id="DDL_Leaf" runat="server"></asp:dropdownlist>2、绑定第一个
//给一级、二级添加单击事件
DDL_Root.Attributes.Add("onchange","load(this.options[this.selectedIndex].value,'DDL_Trunk','DDL_Leaf')");DDL_Trunk.Attributes.Add("onchange","load(this.options[this.selectedIndex].value,'DDL_Leaf','')");
//绑定第一个控件
if(Ds==null)
{
SqlDataAdapter APP_Ada=new SqlDataAdapter("Psp_ShowPopedomMenu "+Request.Cookies["AdminId"].Value,APP_SqlDb.SqlConn);
Ds=new DataSet("Menu");
APP_Ada.Fill(Ds,"Tree");
}
DataView Dv=Ds.Tables["Tree"].DefaultView;
Dv.RowFilter="i_ParentCode=0";
DDL_Root.DataSource=Dv;
DDL_Root.DataTextField="vc_TreeName";
DDL_Root.DataValueField="i_Id";
DDL_Root.DataBind();//隐藏二级、三级控件
Td_Message.InnerHtml="<Script language=\"JavaScript\">document.getElementById(\"DDL_Trunk\").style.display=\"none\";document.getElementById(\"DDL_Leaf\").style.display=\"none\";";
//初始化一级控件的单击事件
Td_Message.InnerHtml+="load("+DDL_Root.SelectedValue+",'DDL_Trunk','DDL_Leaf');</Script>";
3、JavaScript的函数
function load(state,obj,str)
{
var drp2=document.getElementById(obj);
if(drp2!=null)
{
var count=drp2.length;
alert(state);
for(var i = drp2.options.length;i>=0 ;i--)//清楚现有列表项
{
drp2.remove(i);
}
var oHttpReq = new ActiveXObject("MSXML2.XMLHTTP");
var oDoc = new ActiveXObject("MSXML2.DOMDocument");
oHttpReq.open("POST", "DDLSelect.aspx?state="+escape(state), false);
oHttpReq.send("");
result = oHttpReq.responseText;
alert(result);
oDoc.loadXML(result);
return false;
items1 = oDoc.selectNodes("//CITY/Table/i_Id"); //读取所有请求大类所属小类的类名
items2 = oDoc.selectNodes("//CITY/Table/vc_TreeName"); //读取所有请求大类所属小类的编号
var itemsLength=items1.length;
if(itemsLength!=0)
{
var newvalue="";
drp2.style.display="";
for(i=0;i<itemsLength;i++) //将小类的类名和编号赋予DropDownList2 <BR>{ <BR>var newOption = {
var newOption = document.createElement("OPTION");
newOption.value = items1[i].text;//cityId;
newOption.text = items2[i].text;//cityName;
drp2.options.add(newOption);
if(i==0)
newvalue=newOption.value;
}
if(str!="")
load(newvalue,str,"");
}
else
{
drp2.style.display="none";
if(str!="")
document.getElementById(str).style.display="none";
}
}
}
4、动态读取页面if(this.Request["state"]!=null)
{
Response.Clear();
DataSet ds;
//ds=ArtPaper.Ds;
// if(ds==null)
{
ds=new DataSet("Menu");
Sql.TSqlDB APP_SqlDb=new Sql.TSqlDB("DBsmehen");
SqlDataAdapter APP_Ada=new SqlDataAdapter("Psp_ShowPopedomMenu "+Request.Cookies["AdminId"].Value+","+Request["state"],APP_SqlDb.SqlConn);
APP_Ada.Fill(ds,"Tree");
APP_SqlDb.Dispose();
} XmlTextWriter writer = new XmlTextWriter(Response.OutputStream,System.Text.Encoding.UTF8);// Response.ContentEncoding); writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
writer.IndentChar = ' ';
ds.WriteXml(writer);
writer.Flush();
writer.Close();
ds.Dispose();
Response.End();
}
本人一直使用的,方便快捷
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--#include file="adofunctions.asp"-->
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script language="javascript">
<!--function t2(){
document.all("lb2").length=0;
var objSelect = document.myForm.lb2;<%
strsql="select * from lb2 where 1=1"
set objrslb2=getsqlrecordset(strsql,"../dt/db.mdb","lb2")
if not objrslb2.eof then
do
%>
if( <%=objrslb2("lb1")%> == myForm.lb1.value ){
var strname='<%=objrslb2("lb2")%>';
var strvalue=<%=objrslb2("id")%>;
var objOption = new Option(strname,strvalue);
objSelect.options[objSelect.options.length] = objOption;
}
<%
objrslb2.movenext
if objrslb2.eof then
exit do
end ifloop
end if
%>
}//-->
</script>
<title>无标题文档</title>
</head><body>
<form action="lb3.asp" method="post" name="myForm">
<table align="center">
<tr><td>添加二级类别:</td></tr>
<tr>
<td>
<input type="hidden" name="l" value="add">
<select name="lb1" onchange="t2()">
<%
strsql="select * from lb1 where 1=1"
set objrs=getsqlrecordset(strsql,"../dt/db.mdb","lb1")
if not objrs.eof then
do
%>
<option value="<%=objrs("id")%>"><%=objrs("lb1")%></option>
<%
objrs.movenext
if objrs.eof then
exit do
end if
loop
end if
%>
</select>
<% 'response.End() %>
<select name="lb2">
<%
strsql="select * from lb1 where 1=1"
set objrs1=getsqlrecordset(strsql,"../dt/db.mdb","lb1")
if not objrs1.eof then
lb1=objrs1("id")
strsql="select * from lb2 where lb1='"& lb1 &"'"response.Write "<script>alert('"+strsql +"');</script>"
set objrs=getsqlrecordset(strsql,"../dt/db.mdb","lb2")if not objrs.eof then
do
%>
<option value="<%=objrs("id")%>"><%=objrs("lb2")%></option>
<%
objrs.movenext
if objrs.eof then
exit do
end if
loop
end if
end if
%>
</select><input name="lb3" type="text" maxlength="50"><input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
</html>
'三级下拉框连动
'
'数据库:location
'表 loaction 所在地表
' 字段
' lid
' loactionname 名字
' code 代码
' loactionid 省
' districtid 地区
' villageid 县区
'
'数据库样式
'loactionname code loactionid districtid villageid
'河北省 130000 13 00 00
'石家庄市 130100 13 01 00
'长安区 130101 13 01 01
%>
<html>
<head>
<title>List</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<%
dim conn
dim rs
dim sql
dim count
dim rs1
dim sql1
dim rs2
dim sql2
dim count2 set conn=server.createobject("adodb.connection")
conn.open"provider=sqloledb;data source=192.168.0.33;uid=;pwd=;database=location;"
sql = "select RTRIM(left(code,4)) as bm,loactionname,loactionid from loaction where districtid<>00 and villageid=00 order by lid asc"
set rs = conn.execute(sql)
%>
<script language = "javascript">
var onecount;
onecount=0;
subcat = new Array();
<%
count = 0
do while not rs.eof
%>
subcat[<%=count%>] = new Array("<%= trim(rs("loactionname"))%>","<%= trim(rs("loactionid"))%>","<%= trim(rs("bm"))%>");
<%
count = count + 1
rs.movenext
loop
rs.close
set rs=nothing
%>
onecount=<%=count%>; function changelocation(locationid)
{
document.myform.smalllocation.length = 0; var locationid=locationid;
var i;
document.myform.smalllocation.options[0] = new Option('==所选城市的地区==','');
for (i=0;i < onecount; i++)
{
if (subcat[i][1] == locationid)
{
document.myform.smalllocation.options[document.myform.smalllocation.length] = new Option(subcat[i][0], subcat[i][2]);
}
}
}
</script> <!---->
<%
sql2 = "select RTRIM(left(code,4)) as bm,loactionname,villageid from loaction where districtid<>00 and villageid<>00 order by fid asc"
set rs2 = conn.execute(sql2)
%>
<script language = "javascript">
var onecount2;
onecount2=0;
subcat2 = new Array();
<%
count2 = 0
do while not rs2.eof
%>
subcat2[<%=count2%>] = new Array("<%= trim(rs2("loactionname"))%>","<%= trim(rs2("bm"))%>","<%= trim(rs2("villageid"))%>");
<%
count2 = count2 + 1
rs2.movenext
loop
rs2.close
set rs2=nothing
%>
onecount2=<%=count2%>; function changelocation2(villageid)
{
document.myform.village.length = 0; .
var villageid=villageid;
var j;
document.myform.village.options[0] = new Option('==所选地区的县区==','');
for (j=0;j < onecount2; j++)
{
if (subcat2[j][1] == villageid)
{
document.myform.village.options[document.myform.village.length] = new Option(subcat2[j][0], subcat2[j][2]);
}
}
} </script>
</head>
<body>
<form name="myform" method="post"> 分类:<select name="biglocation" onChange="changelocation(document.myform.biglocation.options[document.myform.biglocation.selectedIndex].value)" size="1">
<option selected>请选择你所在的省份</option>
<% sql1 = "select * from loaction where districtid=00 and villageid=00 order by fid asc"
set rs1 = conn.Execute (sql1)
do while not rs1.eof
%>
<option value="<%=trim(rs1("loactionid"))%>"><%=trim(rs1("loactionname"))%></option> <%
rs1.movenext
loop
rs1.close
set rs1 = nothing
conn.Close
set conn = nothing
%>
</select>
<select name="smalllocation" onChange="changelocation2(document.myform.smalllocation.options[document.myform.smalllocation.selectedIndex].value)">
<option selected value="">==所有地区==</option>
</select>
<select name="village" size="1">
<option selected>==所有县区==</option>
</select>
</form> </body>
</html> ***********************************************上面这个有问题呀,第三个下拉列表不动~~ 55555