以前做过一个是这样实现的:下拉列表1的Onchange()事件触发时,提交当前页面(页面1)到另外一个窗口(页面2),同时从表2中查出相应数据,用jsCript写回到页面1,关闭页面2.

解决方案 »

  1.   

    有三个文件组成:select.js;city.jsp;test.jsp
    1.select.js文件。进行js操作
    function clearselect(obj) {
        clearList(obj);
        obj.options[0] = new Option("没有回答","0");   
    } function changelocation(obj,locationid,arr){
        clearselect(obj);
        alert(arr.length+"="+locationid);
        for (i=0;i < arr.length; i++){
    //alert(arr[i][2]+"="+locationid);
    if (arr[i][2] == locationid){ 
    obj.options[obj.length] = new Option(arr[i][1], arr[i][0]);
    }  
        }
    }    function clearList(ctrl){
    if (document.all) {
    for(;ctrl.options.length>0;)
    ctrl.options.remove(ctrl.options.length-1);
    }else{
    for(;ctrl.options.length>0;)
    ctrl.options[ctrl.options.length-1] = null;
    }
    }2.city.jsp文件。查询出城市后,将城市放入到js数组中。
    <%@ page language="Java" contentType="text/html; charset=gb2312"%>  
    <%@ page import="dw.utitily.*"%>
    <%@ page import="java.sql.*"%><%
    String sqlcity="select code,codename,codefather from test_city order by code";
    Result rescity=JDBC.executeQuery(sqlcity);%>
    //将市的信息放入数组中
      var vcity = new Array();
     <% for (int i=0;i<rescity.rowNum();i++){ %>
        vcity[<%=i%>] = new Array("<%=rescity.getStringNoNull(i,0)%>","<%=rescity.getStringNoNull(i,1)%>","<%=rescity.getStringNoNull(i,2)%>");
     <% } %>3.test.jsp文件。具体的选择操作
    <script language="javascript" src="./include/city.jsp"></script>
    <script language="javascript" src="./js/select.js"></script>
    <form method="post" action="">
    省:<select name="province" onchange="changelocation(this.form.city,this.value,vcity)">
         <option value="">没有选择</option>
         <option value="1">上海</option>
         <option value="2">北京</option>
      </select>  
    市:<select name="city" >
         <option value="0">没有回答</option>
      </select> 
    </form>
      

  2.   

    能不能不用javaScript,
    只用java
      

  3.   

    下拉框是html的东西,只能用script语言控制,没听说java可以控制。
      

  4.   

    用<iframe 的方法可以不用javascript,用java实现动态列表框,但速度和效果没有用javascript的好
      

  5.   

    1.从数据库中分别得到两个select的options,以某种方便解析的结构化的形式放到页面中的隐藏域中;
    2.用js以两个多维数组的形式解析隐藏域中的数据;
    3.用js实现动态联动;
      

  6.   

    参考ASP的
    利用XMLHTTP实现的二级连动Select.这是继 "利用XMLHTTP无刷新获取数据" 的另一篇关于XMLHTTP的应用.
    关于XMLHTTP.可以说,是一个很好的接合剂.把客户端和服务端的距离拉近了.
    利用XMLHTTP.我们可以实现很多好的想法.这文章.实现了二级连动Select.
    传统二级连动是把所有的数据都传到有客户端..
    利用XMLHTTP.我们可以实时地返回我们所需要的数据.
    select.htm程序代码: 
    <script language="JavaScript">
    function GetResult(str)
    {
    /*
     *--------------- GetResult(str) -----------------
     * GetResult(str) 
     * 功能:通过XMLHTTP发送请求,返回结果.
     * 参数:str,字符串,发送条件.
     * 实例:GetResult(document.all.userid.value);
     * author:wanghr100(灰豆宝宝.net)
     * update:2004-5-27 19:02
     *--------------- GetResult(str) -----------------
     */
        var oBao = new ActiveXObject("Microsoft.XMLHTTP");
        oBao.open("POST","Server.asp?sel="+str,false);
        oBao.send();
        //服务器端处理返回的是经过escape编码的字符串.
        //通过XMLHTTP返回数据,开始构建Select.
        BuildSel(unescape(oBao.responseText),document.all.sel2)
    }function BuildSel(str,sel)
    {
    /*
     *--------------- BuildSel(str,sel) -----------------
     * BuildSel(str,sel) 
     * 功能:通过str构建Select.
     * 参数:str,字符串,由服务端返回的.有特定结构"字符串1,字符串2,字符串3"
     * 参数:sel,要构建的Select
     * 实例:BuildSel(unescape(oBao.responseText),document.all.sel2)
     * author:wanghr100(灰豆宝宝.net)
     * update:2004-5-27 19:02
     *--------------- BuildSel(str,sel) -----------------
     */
        //先清空原来的数据.
        sel.options.length=0;
        var arrstr = new Array();
        arrstr = str.split(",");
        //开始构建新的Select.
        for(var i=0;i<arrstr.length;i++)
        {
            sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
        }
    }
    </script>
    <select name="sel" onChange="GetResult(this.value)">
    <option value="">请选择
    <option value="福建省">福建省
    <option value="湖北省">湖北省
    <option value="辽宁省">辽宁省
    <select>
    <select name="sel2"></select>  
     server.asp  服务器端处理.
    程序代码: 
    <% @Language="JavaScript" %>
    <%
    function OpenDB(sdbname)
    {
    /*
     *--------------- OpenDB(sdbname) -----------------
     * OpenDB(sdbname) 
     * 功能:打开数据库sdbname,返回conn对象.
     * 参数:sdbname,字符串,数据库名称.
     * 实例:var conn = OpenDB("database.mdb");
     * author:wanghr100(灰豆宝宝.net)
     * update:2004-5-12 8:18
     *--------------- OpenDB(sdbname) -----------------
     */
        var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
        var conn = Server.CreateObject("ADODB.Connection");
        conn.Open(connstr);
        return conn;
    }
    var oConn = OpenDB("data.mdb");
    var province = Request("sel");
    var arrResult = new Array();
    var sql = "select city from china where province='"+province+"'";
    var rs = Server.CreateObject("ADODB.Recordset");
    rs.Open(sql,oConn,1,1);
    while(!rs.EOF)
    {
        //遍历所有适合的数据放入arrResult数组中.
        arrResult[arrResult.length] = rs("city").Value;
        rs.MoveNext();
    }
    //escape解决了XMLHTTP。中文处理的问题.
    //数组组合成字符串.由","字符串连接.
    Response.Write(escape(arrResult.join(",")));
    %> 
     数据库设计
    data.mdb
    表china.
    字段
    id  自动编号
    province 文本
    city  文本表:china 数据: 
    id province city
    1 福建省  福州市
    2 福建省  厦门市
    3 福建省  泉州市
    4 湖北省  武汉市
    5 湖北省  荆州市
    6 湖北省  宜昌市
    7 辽宁省  沈阳市
    8 辽宁省  大连市
    9 辽宁省  盘锦市
      

  7.   

    http://www.cnsxml.com/blogview.asp?logID=316
      

  8.   

    请问如果javascript里面有一个变量的值需要在jsp代码中用到,如何传递呢?具体说就是通过javascript得到选中的列表框的value值,然后传递给jsp代码中的一个变量,用来做调用数据库的参数。请问如何实现呢?