简单的三级连动

<%
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 = ""

这样就避免了该错误的发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值