http://dotnet.aspx.cc/Exam/MultiSelect.zip
下载http://sz.luohuedu.net/xml/Exam/MultiSelect.asp
演示

解决方案 »

  1.   

    第一个问题可参照如下<SCRIPT language="JavaScript">
    /*
     * fason
     */var DATA =[ 
    ["text1"],
    ["select1","select2"]
    ];var S = [["测试11","测试22"],["测试AA","测试BB"]];function doChange(obj) {
    var index = obj.selectedIndex;
    for (var i=0; i<DATA.length;i++)
    V(obj.form, i, index);
    }function doChange2(obj) {
    var x = obj.selectedIndex;
    with(document.form1.elements["select2"]) {
    length = 0;
    for (var i=0;i<S[x].length;i++)
    options[length] = new Option(S[x][i],S[x][i]);
    }
    }function V(f, n, x) {
    for (var i=0; i<DATA[n].length;i++)
    f.elements[DATA[n][i]].style.display = n == x ? "" : "none";
    }
    window.onload = function(){ 
    doChange(document.form1.elements["select0"])
    doChange2(document.form1.elements["select1"])
     }
    </SCRIPT>
    <form name="form1">
    <select name="select0" onchange="doChange(this)">
    <option>本部门</option>
    <option>非本部门</option>
    </select>
    <input name="text1">
    <select name="select1" onchange="doChange2(this)">
    <option selected>测试1</option>
    <option>测试2</option>
    </select>
    <select name="select2"></select>
    </form>
      

  2.   

    或者
    <html>
    <head>
    <script language=javascript>
    var arr="浙江|江苏|安徽|江西";var arr0 = "杭州|宁波|温州|绍兴"; //这些数据可以从数据库中取得
    var arr1 = "南京|苏州|无锡|常州";
    var arr2 = "合肥|翕县|黄山|祁门";
    var arr3 = "南昌|九江|赣州|上饶"; var arr00 = "杭州A区|杭州B区"; 
    var arr01 = "宁波A区|宁波B区"; 
    var arr02 = "温州A区|温州B区"; 
    var arr03 = "绍兴A区|绍兴B区"; var arr10 = "南京A区|南京B区"; 
    var arr11 = "苏州A区|苏州B区"; 
    var arr12 = "无锡A区|无锡B区"; 
    var arr13 = "常州A区|常州B区"; var arr20 = "合肥A区|合肥B区"; 
    var arr21 = "翕县A区|翕县B区"; 
    var arr22 = "黄山A区|黄山B区"; 
    var arr23 = "祁门A区|祁门B区"; var arr30 = "南昌A区|南昌B区"; 
    var arr31 = "九江A区|九江B区"; 
    var arr32 = "赣州A区|赣州B区"; 
    var arr33 = "上饶A区|上饶B区"; //alert(eval("arr"+2+1));
    function AddOptions(dltObj,arrObj)
    {
    dltObj.innerHTML="";
    var arrLocation=arrObj.split("|");
    for(var i=0;i<arrLocation.length;i++){
    var opt=document.createElement("OPTION");
    dltObj.add(opt);
    opt.value=i;
    opt.text=arrLocation[i];
    }
    }
    function init(){
    AddOptions(dltProvince,eval('arr'));
    AddOptions(dltCity,eval('arr'+dltProvince.selectedIndex));
    AddOptions(dltArea,eval('arr'+dltProvince.selectedIndex+dltCity.selectedIndex));
    }
    </script>
    </head>
    <body onLoad="init();">
    <table width="300" cellpading="0" cellspacing="0" border="0">
    <tr>
    <td width="100"><select id="dltProvince" onchange="AddOptions(dltCity,eval('arr'+dltProvince.selectedIndex));AddOptions(dltArea,eval('arr'+dltProvince.selectedIndex+dltCity.selectedIndex));" style="width:100%"></select>
    </td>
    <td width="100"><select id="dltCity" onchange="AddOptions(dltArea,eval('arr'+dltProvince.selectedIndex+dltCity.selectedIndex));" style="width:100%"></select>
    </td>
    <td width="100"><select id="dltArea" style="width:100%"></select>
    </td>
    </tr>
    </table>
    </body>
    </html>
      

  3.   

    第二个问题实例如下:
    首先你建立一个数据库"menu.mdb"
    在里面分别建立三个表,
    表一名称叫:"yj"
    里面字段为
    yjid 属性为[自动编号]
    yname 属性为[文本]
    表二名称叫"ej"
    里面字段为
    ejid 属性为[自动编号]
    ename 属性为[文本]
    yjid 属性为[数字]表二名称叫"sj"
    里面字段为
    sjid 属性为[自动编号]
    sname 属性为[文本]
    ejid 属性为[数字]
    yjid 属性为[数字]下面是维护一级菜单
    把下面代码保存成yj.asp
    <!--#include file="conn.asp"-->
    <%
    name=Split(trim(Request.form("name")), ",")
    if request("name2")="" then
    %>
    <html>
    <head>
    <title>无标题文档</title>
    </head><body>
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><form name="form" method="post" action="fl.asp">
          <p>
            <textarea name="name" cols="60" rows="8" id="name"></textarea>
          </p>
          <p>          <input type="submit" name="Submit" value="提交">
            <input type="hidden" name="name2" value="2">
    </p>
        </form></td>
      </tr>
    </table>
    </body>
    </html>
    <%
    else
    For i=0 To UBound(name) 
    set rs=server.CreateObject("adodb.recordset") 
    rs.open"yj",Conn,1,3
    rs.addnew
    rs("yname")=trim(name(i))
    rs.update
    rs.close
    set rs=nothing
    next
    response.redirect"yj.asp"
    end if
    %>下面是维护二级菜单
    把下面代码保存成ej.asp<!--#include file="conn.asp"-->
    <%
    name=Split(trim(Request.form("name")), ",")
    shen=request.form("shen")
    if shen="" then
    %>
    <html>
    <head>
    <title>无标题文档</title>
    </head><body>
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="31"><div align="center">| <a href="fl.asp">一级分类</a> | <a href="ejfl.asp">二级分类</a> | <a href="sjfl.asp">三级分类</a> | <a href="fjfl.asp">四级分类</a> | </div></td>
      </tr>
    </table>
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><form name="form" method="post" action="ejfl.asp">
          <p>
            <select name="shen" id="yjid">
    <%
    set rs=server.CreateObject("adodb.recordset") 
    rs.open"yj",Conn,1,3
    while not rs.eof
    %>
              <option value="<% =trim(rs("yid"))%>"><% =trim(rs("yname"))%></option>
      <%
      rs.movenext
      wend
      %>
            </select>
            </p>
          <p>
            <textarea name="name" cols="80" rows="10" id="name"></textarea>
          </p>
          <p>          <input type="submit" name="Submit" value="提交">
              </p>
        </form></td>
      </tr>
    </table>
    </body>
    </html>
    <%
    else
    For i=0 To UBound(name)
    set rs=server.CreateObject("adodb.recordset") 
    rs.open"ej",Conn,1,3
    rs.addnew
    rs("ename")=trim(name(i))
    rs("yid")=shen
    rs.update
    rs.close
    set rs=nothing
    next
    response.redirect"ej.asp"
    end if
    %>
      

  4.   

    下面是维护三级菜单
    把下面代码保存成sj.asp<!--#include file="conn.asp"-->
    <%
    name=Split(trim(Request.form("name")), ",")
    yjid=request.form("yjid")
    ejid=request.form("ejid")
    if yjid="" and ejid="" then
    %>
    <html>
    <head>
    <title>无标题文档</title>
    <% 
    set rs18=server.CreateObject("adodb.recordset")        '|
    rs18.open"sj",Conn,1,3  
    %> 
    <script language = "JavaScript">
    <!--
    var onecount; 
    onecount=0; 
    subcat2 = new Array(); 
    <% 
    count = 0 
    do while not rs18.eof 
    %> 
    subcat2[<%=count%>] = new Array("<% =trim(rs18("sname"))%>","<% =trim(rs18("yid"))%>","<% =trim(rs18("sid"))%>"); 
    <% 
    count = count + 1 
    rs18.movenext 
    loop 
    rs18.close 
    set rs18=nothing 
    %> 
    onecount=<%=count%>; function changelocation(yid) 

    document.myform.ejid.length = 0; var yid=yid; 
    var i; 
    document.myform.ejid.options[0] = new Option('选择类别',''); 
    for (i=0;i < onecount; i++) 

    if (subcat2[i][1] == yid) 

    document.myform.ejid.options[document.myform.ejid.length] = new Option(subcat2[i][0], subcat2[i][2]); 

    } }
    //-->
    </script>
    </head><body>
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="31"><div align="center">| <a href="fl.asp">一级分类</a> | <a href="ejfl.asp">二级分类</a> | <a href="sjfl.asp">三级分类</a> | <a href="fjfl.asp">四级分类</a> | </div></td>
      </tr>
    </table>
    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td><form name="myform" method="post" action="sjfl.asp">
          <p>
            <select name="yjid" onChange="changelocation(document.myform.yjid.options[document.myform.yjid.selectedIndex].value)" size="1">
                      <option>专业类别</option>
                      <% 
    set rs12=server.CreateObject("adodb.recordset")
    rs12.open"yj",conn,1,3  
    while not rs12.eof 
    %>
                      <option value="<% =rs12("yid")%>">
                      <% =rs12("yname")%>
                      </option>
                      <%
    rs12.movenext 
    wend
    %>
              </select><select name="ejid" onChange="changelocation2(document.myform.ejid.options[document.myform.ejid.selectedIndex].value)" size="1">
                        <option selected></option>
                      </select>
            </p>
          <p>
            <textarea name="name" cols="70" rows="20" id="name"></textarea>
          </p>
          <p>          <input type="submit" name="Submit" value="提交">
              </p>
        </form></td>
      </tr>
    </table>
    </body>
    </html>
    <%
    else
    For i=0 To UBound(name) 
    set rs=server.CreateObject("adodb.recordset") 
    rs.open"sj",Conn,1,3
    rs.addnew
    rs("yid")=yjid
    rs("eid")=ejid
    rs("sname")=trim(name(i))
    rs("time")=now()
    rs.update
    rs.close
    set rs=nothing
    next
    response.redirect"sj.asp"
    end if
    %>
    下面是数据库链接文件
    保存为conn.asp<%
    'on error resume next
    'dim conn,connstr,dbpath
    '更改数据库名字
    dbpath="menu.mdb"
    Set conn = Server.CreateObject("ADODB.Connection")
    connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbpath)
    '如果你的服务器采用较老版本Access驱动,请用下面连接方法
    'connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(dbpath)
    conn.Open connstr
    %>最后是显示三级联动菜单代码
    把下面保存成ld.asp
    <!--#include file="conn.asp"--><%
    '----------------------------------------------------------------------------------
    set cityrs=server.createobject("ADODB.Recordset")
    citysql="select * from ej"
    cityrs.open citysql,conn,1,3
    '----------------------------------------------------------------------------------
    set cours=server.CreateObject("ADODB.Recordset")
    cousql="select * from sj"
    cours.open cousql,conn,1,3
    '----------------------------------------------------------------------------------
    %>
    <script language="javascript">
    //县级目录
    var countycount;
    countycount=0;
    county=new Array();
    <%
    countys=0
    for i=0 to cours.recordcount
    %>
      county[<%=countys%>]=new Array("<%=trim(cours("sname"))%>","<%=trim(cours("eid"))%>","<%=trim(cours("yid"))%>","<%=trim(cours("sid"))%>")
    <%
    countys=countys+1
    cours.movenext
    if cours.eof then exit for
    next
    cours.close
    %>
    countycount=<%=countys%>
    //以祖父级的ID和父亲ID来确定子孙
    //prosel:祖父ID(省级ID)   citysel:父亲ID(市级ID)
    function changecounty(prosel,citysel){
    document.form.county.length=0;
    var prosel=prosel;
    var citysel=citysel
    for (var j=0;j<countycount;j++)
     {
       if (county[j][2]==prosel && county[j][1]==citysel){
        document.form.county.options[document.form.county.length]=new Option(county[j][0],county[j][3])
        //changetown()
       }
     }
    }//市级目录
    var citycount;
    citycount=0
    city=new Array();
    <%
    citys=0
    for s=0  to cityrs.recordcount
    %>
      city[<%=citys%>]=new Array("<%=trim(cityrs("eid"))%>","<%=trim(cityrs("ename"))%>","<%=trim(cityrs("yid"))%>","<%=trim(cityrs("ename"))%>")
    <%
    citys=citys+1
    cityrs.movenext
    if cityrs.eof then exit for
    next
    cityrs.close
    %>
    citycount=<%=citys%>//触发事件
    function changecity(prosel)
    {
    document.form.city.length=0;
    var prosel=prosel;   //得到祖父级ID(省级)
    //由祖父级ID来确定父亲级目录默认的ID;
    for (var l=0;l<citycount;l++)
     {
     if (city[l][2]==prosel){
      var cityse;
       cityse=l;
       break;
       }
     }
     
    //由祖父级ID来确定父亲级的所有<option></option>选项的值
    for (var l=0;l<citycount;l++)
     {
      if (city[l][2]==prosel){
       document.form.city.options[document.form.city.length]=new Option(city[l][3],city[l][0])
      }
     }
    changecounty(prosel,city[cityse][0])
    }
    function checkdata(){
    //.....其他数据验证
    //.....
    //.....
    //由于city和county最后得到的值是ID,所以下面的操作是在提交的时候给便于取名字
    document.form.cityname.value=document.form.city.options[document.form.city.selectedIndex].value
    document.form.countyname.value=document.form.county.options[document.form.county.selectedIndex].value
    return true
    }
    </script>
    <%
    set prors=server.CreateObject("ADODB.Recordset")
    prosql="select * from yj"
    prors.open prosql,conn,1,3
    %>
    <form name="form" method="post" action="" >
    <select name="province" onChange="changecity(document.form.province.options[document.form.province.selectedIndex].value)" class="kuang" >
      <option value=""selected>选择一级分类</option>
      <option value="<%=trim(prors("yid"))%>"><%=trim(prors("yname"))%></option>
      <%
      dim proselect
      proselect=prors("yid")
      prors.movenext
      for i=0 to prors.recordcount
      %>
       <option value="<%=trim(prors("yid"))%>"><%=trim(prors("yname"))%></option>
      <%
       prors.movenext
       if prors.eof then exit for
      next
      %>
        </select>
    <select name="city" onChange="changecounty(document.form.province.options[document.form.province.selectedIndex].value,document.form.city.options[document.form.city.selectedIndex].value)"  class="kuang" >
        </select><input type="hidden" name="cityname" value="">
    <select name="county"  class="kuang" >
       </select><input type="hidden" name="countyname" value=""></form><%
    '释放对象
    set cityrs=nothing
    set cours=nothing
    set prors=nothing
    set rs=nothing
    %>至此完成全部,不懂的再问我吧!
      

  5.   

    第二个问题,你也可以参照
    http://blog.csdn.net/xxrl/archive/2003/09/03/9950.aspx
      

  6.   

    第三个问题请参看如下地址:
    http://community.csdn.net/Expert/topic/3048/3048959.xml
      

  7.   

    http://fason.nease.net/samples/select/  中有说怎么用,下载文件中*.asp文件也应该有服务端代码示例