由于需要操作数据库,单纯使用javascript是不行的,因此只能选择一个部门就刷新一次页面或作成一个iframe,刷新这个iframe。
在页面中先接收部门id,根据这个id 检索数据库来实现。

解决方案 »

  1.   

    -----------------------------------------------------------------
    文件1:下拉列表表单
    -----------------------------------------------------------------
    <%@ page language="java" import="java.sql.*" contentType="text/html;charset=gb2312" %>
    <html>
    <head>
    <title>jsp动态下拉菜单关联</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <script language="JavaScript">
    <jsp:include page="select.js.jsp" />
    </script>
    </head><body onLoad="load('form1','lei','shop')">
    <form name="form1">
    <select name="lei" onchange="javascript: option('form1','lei','shop')">
      </select>
    <select name="shop">
    </select>
    </form>
    </body>
    </html>---------------------------------------------------------------
    文件2:用jsp动态生成的javascript脚本
    ---------------------------------------------------------------
    <%@ page language="java" contentType="text/html;charset=gb2312" import="java.sql.*" %>
    <%
    Connection con=null;
    Statement conn=null;
    Statement conn1=null;
    try{
    String DBDriver = "oracle.jdbc.driver.OracleDriver";
    String ConnStr = "jdbc:oracle:thin:@192.168.0.14:1521:baojia";
    String user = "itserver";
    String password = "sa";
    Class.forName(DBDriver);
    con = DriverManager.getConnection(ConnStr,user,password);
    conn = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    conn1 = con.createStatement();
    //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //cn=DriverManager.getConnection("jdbc:odbc:baojia","baojia","bamboosales");
    }
    catch(SQLException e){
    out.println(e.toString());
    }
    %><%
    try {
    //用jsp编写的动态下拉菜单关联js文件!\\\\\\\\屈建雄 [email protected]////////
    //第一在body中加入onload="javascript: load('表单名','下拉主菜单','下拉分菜单')"
    //第二在下拉主菜单select中加入onchange="javascript:option('表单名','下拉主菜单','下拉分菜单')"
    //第三嵌入脚本<script language="JavaScript"><jsp:include page="select.js.jsp" /></script>
    //其中表单页中两个下拉菜单为空!
    //jsp部分rs为主菜单表指针,rs1为分菜单表指针!String sql1 = "select * from daqu";   //主菜单sql语句,选出主菜单的选项
    String sql2 = "";
    String op1 = "请选择大区";     //主菜单默认提示语
    String op2 = "请选择分公司";          //分菜单默认提示语
    String view1 = "";
    String value1 = "";
    String view2 = "";
    String value2 = "";ResultSet rs = conn.executeQuery(sql1);
    //++++++++++++++++++++++++++++++++++++++++++javascript:load()++++++++++++++++++++++++++++++++++++++++++++
    out.println("function load(form,op1,op2){");
    int num = 1;
    out.println("var option0=new Option(\"" + op1 + "\");");
    out.println("var option02=new Option(\"" + op2 + "\");");
    out.println("eval(form+\".\"+op1+\".options[0]=option0\");");
    out.println("eval(form+\".\"+op2+\".options[0]=option02\");");
    while(rs.next()) {

    view1 = rs.getString("dq_name");//主菜单显示字符
    value1 = rs.getString("dq_name");//主菜单显示字符对应的值

    out.println("var option" + num + "=new Option(\"" + view1.trim() + "\",\"" + value1.trim() + "\");");
    out.println("eval(form+\".\"+op1+\".options[" + num + "]=option" + num + "\");");
    num = num + 1;
    }
    out.println("eval(form+\".\"+op1+\".length=" + num + "\");");
    out.println("}");
    //++++++++++++++++++++++++++++++++++++++++javascript:option()++++++++++++++++++++++++++++++++++++++++
    out.println("function option(form,op1,op2){");
    out.println("var op0=new Option(\"" + op2 + "\");");
    out.println("if(eval(form+\".\"+op1+\".options[0].selected\")){eval(form+\".\"+op2+\".options[0]=op0\");eval(form+\".\"+op2+\".length=1\");}");
    rs.beforeFirst();
    int op1num = 1;
    while(rs.next()) {
    int op2num = 0;

    sql2 = "select ka_name from kouan where dq_id=" + rs.getString("dq_id"); //分菜单sql语句,选出与主菜单关联的分菜单选项

    ResultSet rs1 = conn1.executeQuery(sql2);
    while(rs1.next()) {

    view2 = rs1.getString("ka_name");//分菜单显示字符
    value2 = rs1.getString("ka_name");//分菜单显示字符对应的值

    out.println("var option" + op1num + "_" + op2num + "=new Option(\"" + view2.trim() + "\",\"" + value2.trim() + "\");");
    op2num = op2num + 1;
    }
    rs1.close();
    out.println("var j" + op1num + "=" + op2num + ";");
    out.println("if (eval(form+\".\"+op1+\".options[" + op1num + "].selected\")){");
    out.println("for(var i=0;i<j" + op1num + ";i++){");
      out.println("eval(form+\".\"+op2+\".options[i]=option" + op1num + "_\"+i);}");
    out.println("eval(form+\".\"+op2+\".length=\"+j" + op1num + ");}");
    op1num = op1num + 1;
    }
    out.println("}");
    conn.close();
    conn1.close();
    con.close();
    }
    catch(Exception ex) {
    out.print(ex);
    }
    %>