【发布时间】:2015-07-25 14:28:57
【问题描述】:
在我的一个 JSP 页面中,我想创建动态下拉列表,其中第二个下拉列表取决于第一个下拉列表选择。我能够在数据库的第一个下拉列表中填充数据。但是对于第二个下拉列表它不起作用。我想要根据第一个下拉框的选定数据从数据库中获取第二个下拉列表的数据。我试过下面的代码。
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/orcl" ,"hr", "password");
ArrayList<String> uniList = new ArrayList<String>();
String query = "select distinct cname from course ";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
uniList.add(rs.getString("cname"));
}
pageContext.setAttribute("authors", uniList);
%>
<script language="javascript" type="text/javascript">
function dropdownlist2(listindex)
{
String query2 = "select module from course where cname=?";
PreparedStatement st2 = con.prepareStatement(query2);
st2.setString(1,listindex);
ResultSet rs2=st2.executQuery();
ArrayList<String> uniList1 = new ArrayList<String>();
while (rs.next()) {
uniList1.add(rs2.getString("module"));
}
pageContext.setAttribute("authors1", uniList1);
}
</script>
<form name="addteacher" onsubmit="" >
<center>
<table width="50%" border="0" align="center" cellpadding="5" cellspacing="5">
<tr>
<th align=left>Faculty Name :</th><td align=left><input type=text name=tname size="30" ></td></tr>
<tr>
<th align=left>Enter Course :</th><td align=left><select name="Coursebox" onchange="javascript: dropdownlist2(this.options[this.selectedIndex].value);">
<option values="">-select-</option>
<c:forEach var="cn" items="${authors}">
<option value="${cn}">${cn}</option>
</c:forEach></select></td></tr>
<tr><th align=left>Enter Module:</th>
<td align=left><select name="dname" size="1">
<c:forEach var="cn1" items="${authors1}">
<option value="${cn1}">${cn1}</option>
</c:forEach>
</select></td> </tr> </table> </center> </form>
谢谢
【问题讨论】:
-
你在
script标签内写java代码。 -
嗨 Satya,你能帮我解释一下吗?正如我对第二个下拉列表的理解,我需要使用第一个下拉列表中的选定值调用 onchange 方法。正因为如此,我才用这种方式。
-
看看我的回答,它会起作用的。 @Rohit khandelwal
标签: javascript java jquery html jsp