http://expert.csdn.net/Expert/topic/2358/2358794.xml?temp=.5355799

解决方案 »

  1.   

    用XMLDOM实现。
    先做一些Servlet专门用于生成XML页面
    然后用JS调XMLDOM去取这些XML页面,然后JS解析XML,更新下拉框的选项。可参考下面的页面
    http://202.102.240.71/nyist_xfz/tjbb/wpjxs/index.html
      

  2.   

    只是推荐
    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=181438
      

  3.   

    级连,建议把三者的内容读出,然后在页面用javascript做显示控制
      

  4.   

    如果不是很多的话,建议一次取出来,然后用javascript控制显示。
      

  5.   

    你要做的是级联菜单,静态的话用javascript实现
    我拷贝的
    <SCRIPT LANGUAGE="JavaScript">
    <!-- Begin
    var arrItems1 = new Array();
    var arrItemsGrp1 = new Array();arrItems1[3] = "Truck";
    arrItemsGrp1[3] = 1;
    arrItems1[4] = "Train";
    arrItemsGrp1[4] = 1;
    arrItems1[5] = "Car";
    arrItemsGrp1[5] = 1;arrItems1[6] = "Boat";
    arrItemsGrp1[6] = 2;
    arrItems1[7] = "Submarine";
    arrItemsGrp1[7] = 2;arrItems1[0] = "Planes";
    arrItemsGrp1[0] = 3;
    arrItems1[1] = "Ultralight";
    arrItemsGrp1[1] = 3;
    arrItems1[2] = "Glider";
    arrItemsGrp1[2] = 3;var arrItems2 = new Array();
    var arrItemsGrp2 = new Array();arrItems2[21] = "747";
    arrItemsGrp2[21] = 0
    arrItems2[22] = "Cessna";
    arrItemsGrp2[22] = 0arrItems2[31] = "Kolb Flyer";
    arrItemsGrp2[31] = 1
    arrItems2[34] = "Kitfox";
    arrItemsGrp2[34] = 1arrItems2[35] = "Schwietzer Glider";
    arrItemsGrp2[35] = 2arrItems2[99] = "Chevy Malibu";
    arrItemsGrp2[99] = 5
    arrItems2[100] = "Lincoln LS";
    arrItemsGrp2[100] = 5
    arrItems2[57] = "BMW Z3";
    arrItemsGrp2[57] = 5arrItems2[101] = "F-150";
    arrItemsGrp2[101] = 3
    arrItems2[102] = "Tahoe";
    arrItemsGrp2[102] = 3arrItems2[103] = "Freight Train";
    arrItemsGrp2[103] = 4
    arrItems2[104] = "Passenger Train";
    arrItemsGrp2[104] = 4arrItems2[105] = "Oil Tanker";
    arrItemsGrp2[105] = 6
    arrItems2[106] = "Fishing Boat";
    arrItemsGrp2[106] = 6arrItems2[200] = "Los Angelas Class";
    arrItemsGrp2[200] = 7
    arrItems2[201] = "Kilo Class";
    arrItemsGrp2[201] = 7
    arrItems2[203] = "Seawolf Class";
    arrItemsGrp2[203] = 7function selectChange(control, controlToPopulate, ItemArray, GroupArray)
    {
    var myEle ;
    var x ;
    // Empty the second drop down box of any choices
    for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null;
    if (control.name == "firstChoice") {
    // Empty the third drop down box of any choices
    for (var q=myChoices.thirdChoice.options.length;q>=0;q--) myChoices.thirdChoice.options[q] = null;
    }
    // ADD Default Choice - in case there are no values
    myEle = document.createElement("option") ;
    myEle.value = 0 ;
    myEle.text = "[SELECT]" ;
    controlToPopulate.add(myEle) ;
    for ( x = 0 ; x < ItemArray.length  ; x++ )
    {
    if ( GroupArray[x] == control.value )
    {
    myEle = document.createElement("option") ;
    myEle.value = x ;
    myEle.text = ItemArray[x] ;
    controlToPopulate.add(myEle) ;
    }
    }
    }
    //  End -->
    </script>
    <form name=myChoices>
    <table align="center">
    <tr>
    <td>
    <SELECT id=firstChoice name=firstChoice onchange="selectChange(this, myChoices.secondChoice, arrItems1, arrItemsGrp1);">
    <option value=0 SELECTED>[SELECT]</option>
    <option value=1>Land</option>
    <option value=2>Sea</option>
    <option value=3>Air</option>
    </SELECT>
    </TD><TD>
    <SELECT id=secondChoice name=secondChoice onchange="selectChange(this, myChoices.thirdChoice, arrItems2, arrItemsGrp2);">
    </SELECT>
    <SELECT id=thirdChoice name=thirdChoice>
    </SELECT>
    </TD>
    </TR>
    </TABLE>
    </form>
      

  6.   


    我按照上面的改的二级级联菜单
    <%@ page contentType="text/html;charset=GBK"%>
    <%@page import="java.sql.ResultSet"%>
    <%@page import="java.text.*"%>
    <%@page import="java.util.Date"%>
    <%@page import="DataBase.*"%>
    <%  
       ResultSet rs=null;
    String depid="";
    opendb op=null;
    String  departmentid="";
      int count=0;
     String name1="";
    try{
    op=new opendb();
    %><SCRIPT LANGUAGE="JavaScript">
    <!-- Begin
    var arrItems1 = new Array();
    var arrItemsGrp1 = new Array();
    <%
    rs=op.getdb("select name,operator_id,usercount,department_id from tb_operator");
    while(rs.next()){
       count++;
       name1=rs.getString("usercount");
    %>
    arrItems1[<%=count%>] = <%="\""+name1+"\""%>;
    arrItemsGrp1[<%=count%>] = <%=rs.getInt("department_id")%>;
    <%}rs.close(); 
    %>function selectChange(control, controlToPopulate, ItemArray, GroupArray)
    {
    var myEle ;
    var x ;
    // Empty the second drop down box of any choices
    for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null;myEle = document.createElement("option") ;
    myEle.value = 0 ;
    myEle.text = "[SELECT]" ;
    controlToPopulate.add(myEle) ;
    for ( x = 0 ; x < ItemArray.length  ; x++ )
    {
    if ( GroupArray[x] == control.value )
    {
    myEle = document.createElement("option") ;
    myEle.value = x ;
    myEle.text = ItemArray[x] ;
    controlToPopulate.add(myEle) ;
    }
    }
    }
    //  End -->
    </script><form name=myChoices>
    <table align="center">
    <tr>
    <td>
    <SELECT id=firstChoice name=firstChoice onchange="selectChange(this, myChoices.secondChoice, arrItems1, arrItemsGrp1);">
    <option value=0 SELECTED>[SELECT]</option>
    <%rs=op.getdb("select department_id,department_name from tb_department ");
    while(rs.next())
    {%>
    <option value=<%=rs.getInt("department_id")%>><%=rs.getString("department_name")%></option>
          <%}rs.close();%>
    </SELECT>
    </TD><TD>
    <SELECT id=secondChoice name=secondChoice >
    </SELECT>
    </TD>
    </TR>
    </TABLE>
    </form>
    <% 
     } finally{
        op.conclose();
    }%>
      

  7.   

    <BODY>
    <SELECT NAME="s1"><option>需要JavaScript才能正确显示</SELECT>
    <SELECT NAME="s2"></SELECT>
    <SELECT NAME="s3"></SELECT>
    <SELECT NAME="s4"></SELECT>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    //选择框的名字
    selector = [ "s1", "s2", "s3", "s4" ];
    //选择项: "名字", "值", 子选择
    menu = [
    "地球","1",
    [
    "中国","86",
     [
     "北京","BJ",
      [
      "--","1",null
      ],
     "四川","SC",
      [
      "成都","28",null,
      "乐山","",null,
      "攀枝花","",null,
      "自贡","",null,
      "德阳","",null,
      "绵阳","",null
      ]
     ],
    "米国","1",
     [
     "加利福尼亚","CA",
      [
      "旧金山","1",null,
      "洛杉矶","2",null
      ],
     "华盛顿","WA",
      [
      "西雅图","seattle",null
      ]
     ]
    ],
    "火星","2",
    [
    "大峡谷","86",
     [
     "小山丘","BJ",
      [
      "A地区","28",null,
      "B地区","",null,
      "C地区","",null
      ]
     ]
    ]
    ];function wizz(level)
    {
    if( level == 0 )
     a = menu;
    else
    {
     str = "menu";
     for( i=0; i<level; i++ )
      str += "[" + (document.all[selector[i]].selectedIndex * 3 + 2)  + "]";
     a = eval(str);
    }
    if( a == null ) return;
    s = document.all[selector[level]];
    i = s.length;
    while( i > 0 ) s.options[--i] = null;
    while( i < Math.floor(a.length/3) )
     s.options[i] = Option( a[i*3], a[i++*3+1] );
    s.onchange = Function("wizz(" + (level+1) + ")");
    wizz(level+1);
    }
    wizz(0);
    //-->
    </SCRIPT>
    </BODY>
    </HTML>
      

  8.   

    如果内容不多的话可先从数据库取出来放在数组里
    然后再根据要求显示;
    级联的dd,csdn上很多的,搜一下,我就是这样做的,祝好运!
      

  9.   

    转载:<%sqlRst=sqls.executeQuery(sql1);
     
        
                        if (sqlRst != null)
                          {
                          int i = 0;
                           while (sqlRst.next()){
                           String[] sList = new String[2];
                           product_kind=sqlRst.getString ("product_kind");
                           product_kind_name=sqlRst.getString ("product_kind_name");
                           sList[0]=product_kind;
                           sList[1]=product_kind_name;
                           //out.print(sList[0]+sList[1]);
                           list.add(sList);//ArrayList:小类
                         
                            }
                           }
                                                    
                      
                      %>
                       <%sqlRst=sqls.executeQuery(sql);
     
        
                        if (sqlRst != null)
                          {
                          int i = 0;
                           while (sqlRst.next()){
                           String[] sList = new String[2];
                           product_kind=sqlRst.getString ("product_kind");
                           product_kind_name=sqlRst.getString ("product_kind_name");
                           sList[0]=product_kind;
                           sList[1]=product_kind_name;
                           //out.print(sList[0]+sList[1]);
                           list1.add(sList);//ArrayList:大类
                         
                            }
                           }
                         
                     
                      %>
    <script language="javascript"> 
    function lTrim(str)
    {
    if (str.charAt(0) == " ")
    {
    //如果字串左边第一个字符为空格
    str = str.slice(1);//将空格从字串中去掉
    //这一句也可改成 str = str.substring(1, str.length);
    str = lTrim(str); //递归调用
    }
    return str;
    }//去掉字串右边的空格
    function rTrim(str)
    {
    var iLength;iLength = str.length;
    if (str.charAt(iLength - 1) == " ")
    {
    //如果字串右边第一个字符为空格
    str = str.slice(0, iLength - 1);//将空格从字串中去掉
    //这一句也可改成 str = str.substring(0, iLength - 1);
    str = rTrim(str); //递归调用
    }
    return str;
    }//去掉字串两边的空格
    function trim(str)
    {
    return lTrim(rTrim(str));
    }               
     function InitsmallClass()
      {
         province  = new Array();   
         <% for (int i=0; i<list.size(); i++) {
            temp = (String[])list.get(i);
         %>
           province[<%=i%>]=new Array();
           province[<%=i%>][0]=" <%=temp[0]%>";
           province[<%=i%>][1]=" <%=temp[1]%>";
           //alert(province[<%=i%>][1]); 
         <%}%>
      }
      
      function InitBigClass()
      {
         prov  = new Array();   
         <% for (int i=0; i<list1.size(); i++) {
            temp1 = (String[])list1.get(i);
         %>
           prov[<%=i%>]=new Array();
           prov[<%=i%>][0]=" <%=temp1[0]%>";
           prov[<%=i%>][1]=" <%=temp1[1]%>";
          // alert(prov[<%=i%>][1]); 
         <%}%>
      }
     
       
    InitBigClass();
    InitsmallClass();function changeprovince(myfrm)
     {  var selectedprovinceid,i,j;
      for(i=Link.pkind.options.length-1;i>=0;--i)
        {
          Link.pkind.options[i]=null;  //清空改变之前
        }
      selectedprovinceid=Link.select2.options[Link.select2.selectedIndex].value; //获取改变后的
      //alert(selectedprovinceid); 
      selectedprovinceid=trim(selectedprovinceid)
      
      j=0;
      for(i=0;i<province.length;i++)
       {      
          var pro
          pro=province[i][0];
          pro =trim(pro.substring(1,4)); 
          //alert(pro); 
         if(selectedprovinceid==pro)
           {
              //alert("????"); 
              Link.pkind.options[j]=new Option(trim(province[i][1]),trim(province[i][0]));//1改成0
              //alert(Link.pkind.options[j].value); 
              ++j;
            }
       }     
     } 
    </script>
      

  10.   

    感谢大家的无私帮助。
    明天是元旦,祝愿大家新年快乐家庭幸福事业美满。
    特别感谢killerdanny,谢谢你的JSP例子。