<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
ConnSQL = "driver={sql server};database=test;server=.;uid=sa;pwd="
Conn.open ConnSQL
%>
<form name="formsubmit">
<table border="0" cellspacing="0" cellpadding="0">
<tr align="center">
<td nowrap height="11">
<select name="Program" size="1" onChange="redirect(this.options.selectedIndex)">
</select>
<select name="Province" size="1" onChange="redirect1(this.options.selectedIndex)">
</select>
<select name="City" size="1">
</select>
</table>
</form></div>
<script language="JavaScript">
var program = document.formsubmit.Program;
<%
i = -1
p = -1
c = -1
s_ProgramName = ""
s_Province = ""
s_Str1 = ""
s_Str2 = ""
Sql = "Select * From T_GameList Order By ProgramID,Province"
Rs.Open Sql,Conn,1,3
While Not Rs.Eof
If s_ProgramName <> Rs("ProgramName") Then
i = i + 1
p = -1
s_ProgramName = Rs("ProgramName")%>
program.options[<%=i%>]=new Option('<%=Rs("ProgramName")%>','<%=Rs("ProgramID")%>');
<% End If
If s_Province <> Rs("Province") Then
p = p + 1
c = -1
s_Province = Rs("Province")
s_Str1 = s_Str1 & "group["&i&"]["&p&"]=new Option('"&Rs("Province")&"',''); "
End If
c = c + 1
s_Str2 = s_Str2 & "secondGroup["&i&"]["&p&"]["&c&"]=new Option('"&Rs("City")&"',''); "
Rs.MoveNext
Wend
Rs.Close
%>
var groups=document.formsubmit.Program.options.length;
var group=new Array(groups);
for (i=0; i<groups; i++)
group[i]=new Array()
<%=s_Str1%>
var province=document.formsubmit.Province
var secondGroups=document.formsubmit.Province.options.length;
var secondGroup=new Array(groups);
for (i=0; i<groups; i++)
{
secondGroup[i]=new Array(group[i].length);
for (j=0; j<group[i].length; j++)
{
secondGroup[i][j]=new Array();
}
}
<%=s_Str2%>
var city=document.formsubmit.City;
function redirect(x)
{
for (m=province.options.length-1;m>0;m--)
province.options[m]=null;
for (i=0;i<group[x].length;i++)
{
province.options[i]=new Option(group[x][i].text,group[x][i].value);
}
province.options[0].selected=true;
redirect1(0);
}
function redirect1(y)
{
for (m=city.options.length-1;m>0;m--)
city.options[m]=null;
for (i=0;i<secondGroup[document.formsubmit.Program.options.selectedIndex][y].length;i++)
{
city.options[i]=new
Option(secondGroup[document.formsubmit.Program.options.selectedIndex][y][i].text,secondGroup[document.formsubmit.Program.options.selectedIndex][y][i].value);
}
city.options[0].selected=true;
}
redirect(0);
</script>
SQL表结构:
create table t_gamelist(
programid varchar(10),
programname varchar(20),
province varchar(10),
city(10))
insert into t_gamelist
select '1','三国群英传','北京','朝阳'
union all
select '1','三国群英传','北京','海淀'
union all
select '1','三国群英传','黑龙江','佳木斯'
union all
select '1','三国群英传','黑龙江','哈尔滨'
union all
select '1','三国群英传','辽宁','铁岭'
union all
select '2','曹操传','山东','蓬莱'
union all
select '2','曹操传','山西','大同'
union all
select '2','曹操传','山西','太原'
union all
select '2','曹操传','河北','石家庄'
union all
select '2','曹操传','河北','保定'
这个三级连动只是根据工作上的需要做的。
如果有什么问题希望大家指出。
经过反复验证,发现了一个小问题。
当游戏名不同省份名相同时就会出错。
现改正如下:
在If s_ProgramName <> Rs("ProgramName") Then这句后加
s_Province = ""
这样就避免了该错误的发生。