windows2003通过测试 <script language="javascript">// 实例化下拉列表,所对应的数组即为arr_列表名function InitParent(selectName){ var sParent=document.all(selectName); var selectArray=new Array(); selectArray=eval("arr_"+selectName); sParent.length=0; //alert(selectArray.length); for(var i=0;i<selectArray.length;i++) { sParent.options[sParent.length]=new Option(selectArray[i][1],selectArray[i][0]); }}//父级下拉菜单跟子级下拉菜单如何关联function matchParentChild(pValue,cValue){ if(pValue==cValue || pValue=="") { return true; } return false;}//改变父级菜单时子级菜单所对应的操作function ChangeParent(pName,cName){ var sChild=document.all(cName); var sParent=document.all(pName); var cArray=eval("arr_"+cName); sChild.length=0; for(var i=0;i<cArray.length;i++) { if(matchParentChild(sParent.value,cArray[i][2])) { sChild.options[sChild.length]=new Option(cArray[i][1],cArray[i][0]); } }}</script><%set conn=server.CreateObject("adodb.connection")connstr="driver={Sql server}; server=server3000zhongzhao; database=cnnc;uid=sa;pwd=sa;"conn.open connstr'定义第一个级别,测试数据dim sqlm(1)sqlm(1)=" select ltrim(i_id) as i_id,i_centername,'' as pid from dept where i_level=1"sqlm(0)="select ltrim(c_id) as c_id,c_name,c_dept from member where c_level=1" call getJsArray(sqlm,"username")'定义第二个级别,测试数据dim sqln(1)sqln(1)="select left(a_id,2) as a_id,a_name,'' as pid from area where a_level=2"sqln(0)="select a_id,a_name,left(a_id,2) as pid from area where a_level=3"call getJsArray(sqln,"area")'根据sql自动生成javascript arr,注意,sql语句中的列要全部为字符格式,如果是零,则忽略Sub getJsArray(byval sql, byval arrName) li_max = UBound(sql) If li_max>= 1 Then For j = li_max To 1 '生成下拉框 Set rs = server.CreateObject("Adodb.RecordSet") 'Response.write sql(j) Response.Write("<select name=""" & arrName & j & """ id=""" & arrName & j & """") if j=1 then '生成onchange事件 Response.write(" onchange=""ChangeParent('" & arrName & j & "','" & arrName & "')"" ") else Response.write(" onchange=""ChangeParent('" & arrName & j & """,""" & arrName & (j-1) & """)"" ") end if Response.write("></select>") 'response.write sql(j) rs.Open sql(j), conn, 1, 1 '生成的数组 Response.write("<script language=""javascript"">") Response.Write("var arr_" & arrName & j & "=new Array();") '定义数据 'Response.write("" & arrName & ".length=0;") i = 0 Do While Not rs.EOF Response.Write("arr_" & arrName & j & "[" & i & "]=new Array(""" & rs(0) & """,""" & rs(1) & """,""" & rs(2) & """);") 'Response.write(arrName & ".options[" & i & "]=new Option(""" & rs(1) & """,""" & rs(0) & """);") i = i + 1 rs.movenext() Loop Response.write("InitParent('" & arrName & j & "');") Response.write("</script>") rs.Close(): Set rs = Nothing Next 'Response.write("<script language=""javascript"">") 'response.write(</'script>) End If '生成下拉框 'Response.write sql(0) Response.Write("<select name=""" & arrName & """ id=""" & arrName & """></select>") Set rs = server.CreateObject("Adodb.RecordSet") rs.Open sql(0), conn, 1, 1 Response.write("<script language=""javascript"">") '生成的数组 Response.Write("var arr_" & arrName & "=new Array();") '定义数据 'Response.write("" & arrName & ".length=0;") i = 0 Do While Not rs.EOF Response.Write("arr_" & arrName & "[" & i & "]=new Array(""" & rs(0) & """,""" & rs(1) & """,""" & rs(2) & """);") 'Response.write(arrName & ".options[" & i & "]=new Option(""" & rs(1) & """,""" & rs(0) & """);") i = i + 1 rs.movenext() Loop Response.write("InitParent(""" & arrName & """);") Response.write("</script>") rs.Close(): Set rs = Nothing End Subconn.close():set conn=nothing%>