我现在有两个下拉列表框,第一级是供选择部门的,第二级是供选择科室的。也就是当我选了某一个部门之后,在第二级列表框处就显示出这个部门包含的科室信息。
我写的代码如下:请各位高手帮帮忙,急用!<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.sql.*" %>
<%@ page import="device.bean.DBConnection" %>
<jsp:useBean id="db" class="device.bean.DBConnection" ></jsp:useBean> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>设置实验信息</title>
        <%
            ResultSet rs = null;
            String sql;
            int count;
            int count2;
            try {
                sql = "select OfficeId,DepartmentId,Name from Office order by OfficeId";
                System.out.println(sql);
                rs = db.executeQuery(sql);   
        %>
<script language="javascript" type="text/javascript">
var onecount;
onecount=0;
subcat=new Array();
<%
count=0;
while(rs.next()){
%>
subcat[<%=count%>]=new Array("<%=rs.getString("Name")%>","<%=rs.getInt("DepartmentId")%>","<%=rs.getInt("OfficeId")%>");
<%
count = count + 1 ;
%>
onecount=<%=count%>;
<%
}
}catch(Exception e){
e.printStackTrace();
}finally{
rs.close();
rs=null;
//db.closeDb();
}
%>
function changelocation(DepId){
document.myform.Office.length=0;
var DepId=DepId;
//alert("DepId="+DepId);
var i;
document.myform.Office.options[0]=new Option('==科室==','');
for(i=0;i<onecount;i++){
//subcat[i][1] = subcat[i][1].toString();
//alert("subcat[i][1]="+subcat[i][1]);
if (subcat[i][1] == DepId)//DepId+""作用为将整形DepId转化为字符串类型
{
   document.myform.Office.options[document.myform.Office.length] = 
                      new Option(subcat[i][0], subcat[i][2]);
}
}
}
</script>
</head>
    
<body>
<form id="myform" name="myform" method="post" action="">
  <table width="500" border="1" align="center">
    <tr>
      <td colspan="3"><div align="center" class="STYLE1">设置实验室信息</div></td>
    </tr>
    <tr>
      <td width="94">实验室编号:</td>
      <td width="169"><input name="LabId" type="text" id="LabId" size="20" /></td>
      <td width="215">&nbsp;</td>
    </tr>
    <tr>
      <td>实验室名称:</td>
      <td><input name="LabName" type="text" id="LabName" size="20" /></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>所属部门:</td>
      <td><select name="Department" size="1" id="Department"
      onChange="changelocation(document.myform.Department.options[document.myform.Department.selectedIndex].value)">
      <option>选择部门</option>
<!--读取数据库中已有的部门-->
<%
  ResultSet rs0 = null;
  String sql0 = "";
  int num = 1;
  //String sql1 = "";
  sql0 = "select DepartmentId,Name from Department order by DepartmentId ";
  try{
rs0 = db.executeQuery(sql0);
while(rs0.next()){
String DepartmentId = rs0.getString("DepartmentId");
String DepartmentName = rs0.getString("Name");
    //sql1 = "select OfficeId,Name from Office where DepartmentId='"+DepartmentId+"' order by OfficeId ";
%>
<option value="<%=DepartmentId%>"><%=DepartmentName%></option>
<%
  num++;
    }
}catch(Exception e){
e.printStackTrace();
}finally{
db.closeDb();
}
 %>
      </select></td>
      <td><select name="Office" size="1" id="Office">
          <option>选择科室</option>      
      </select></td>
    </tr>
    <tr>
      <td><input type="submit" name="button" id="button" value="保存" />
          <input type="reset" name="button2" id="button2" value="取消" /></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </table>
</form>
</body>  
</html>

解决方案 »

  1.   

    先用json封装好啊!接下去就是遍历了!
      

  2.   

    你是在onChange事件里面写的,得到部门,然后通过部门去选择科室,因该在这个时候去查询数据库,然后在那边拼写字符串,然后用添加到下拉列表中。
    你的subsat里面有值吗,我很怀疑,
      

  3.   

     
           jsp群号 :88159189
       来吧咱们一起讨论一下, 有什么不会, 有什么不懂的,
                一起想,一起看 
      

  4.   

    办法挺多的,在服务器端也可以的,先查出所有部门显示在jsp页面上,然后在根据部门号找到对应的科室,这里要在一级下拉框中添加一个onchange事件,当下拉框改变时就触发改事件,在事件中得到当前下拉框的值传到对应的处理方法中,在调用改方法,返回一个list集合,在遍历一下即可。