设计一个页面包含一个列表框和一个form.本意是想通过对列表框中数据项的选择,来达到更新查询,在表格中能动态显示所选中的数据项的记录。但实现时发现表格的记录不会自动改变。现求助于高手jsp文件如下:<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.lang.Math.*"%>
<%@ page import="java.util.*"%><%!
ResultSet rs=null;
String sql=null;
int curr_labid=0;
int lid=0;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>实验室基本信息查询</title><Script language="JavaScript">
function mysubmit(){
document.myform.submit();
}
</Script>
</head><body>
<center><form name="myform" action="book.jsp" method="post">
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB","sa","");
Statement stmt=conn.createStatement();
%>
<%
sql="select * from Lab";
try{
rs=stmt.executeQuery(sql);
}
catch(Exception e)
{
out.println("访问实验室数据出错!");
return;
}%>
请选择要预约的实验室:
<select name=labid onChange="mysubmit()">
<% while(rs.next())
{
int tmplabid=rs.getInt("Lid");
if(curr_labid==0)
{curr_labid=tmplabid;}
if(curr_labid!=0&&curr_labid==tmplabid){
out.println("<option value="+tmplabid+"selected>"+rs.getString("Lname")+"</option>");
}else
{out.println("<option value="+tmplabid+">"+rs.getString("Lname")+"</option>");}
}
%>
</select>
</form>
<hr>
<table width=640 cellSpacing =1 cellPadding=3 border=0>
<TR align=middle>
<TH >实验室编号</TH>
<TH >实验室名称</TH>
<TH >实验室简介</TH>
<TH >预约</TH>
</TR>
<%
sql="select * from Lab where Lid="+curr_labid;
ResultSet rst=stmt.executeQuery(sql);
%>
<%
int t_labid=0;
String t_labname=null;
String t_labintro=null;
while(rst.next()){
%>
<TR align=center>
<TD>
<%
t_labid=rst.getInt("Lid");
out.println(t_labid);
%> </TD>
<TD>
<%
t_labname=rst.getString("Lname");
out.println(t_labname);
%> </TD>
<TD>
<%
t_labintro=rst.getString("Lintro");
out.println(t_labintro);
%> </TD>
<TD width="69">
<A href=book1.jsp>预约</A>
</TD>
</TR>
<%
}
%>
</table>
<%
session.setAttribute("lid",curr_labid);
%>
</center>
<hr>
</body>
</html>
<%@ page import="java.lang.Math.*"%>
<%@ page import="java.util.*"%><%!
ResultSet rs=null;
String sql=null;
int curr_labid=0;
int lid=0;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>实验室基本信息查询</title><Script language="JavaScript">
function mysubmit(){
document.myform.submit();
}
</Script>
</head><body>
<center><form name="myform" action="book.jsp" method="post">
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB","sa","");
Statement stmt=conn.createStatement();
%>
<%
sql="select * from Lab";
try{
rs=stmt.executeQuery(sql);
}
catch(Exception e)
{
out.println("访问实验室数据出错!");
return;
}%>
请选择要预约的实验室:
<select name=labid onChange="mysubmit()">
<% while(rs.next())
{
int tmplabid=rs.getInt("Lid");
if(curr_labid==0)
{curr_labid=tmplabid;}
if(curr_labid!=0&&curr_labid==tmplabid){
out.println("<option value="+tmplabid+"selected>"+rs.getString("Lname")+"</option>");
}else
{out.println("<option value="+tmplabid+">"+rs.getString("Lname")+"</option>");}
}
%>
</select>
</form>
<hr>
<table width=640 cellSpacing =1 cellPadding=3 border=0>
<TR align=middle>
<TH >实验室编号</TH>
<TH >实验室名称</TH>
<TH >实验室简介</TH>
<TH >预约</TH>
</TR>
<%
sql="select * from Lab where Lid="+curr_labid;
ResultSet rst=stmt.executeQuery(sql);
%>
<%
int t_labid=0;
String t_labname=null;
String t_labintro=null;
while(rst.next()){
%>
<TR align=center>
<TD>
<%
t_labid=rst.getInt("Lid");
out.println(t_labid);
%> </TD>
<TD>
<%
t_labname=rst.getString("Lname");
out.println(t_labname);
%> </TD>
<TD>
<%
t_labintro=rst.getString("Lintro");
out.println(t_labintro);
%> </TD>
<TD width="69">
<A href=book1.jsp>预约</A>
</TD>
</TR>
<%
}
%>
</table>
<%
session.setAttribute("lid",curr_labid);
%>
</center>
<hr>
</body>
</html>
<%@ page import="java.lang.Math.*"%>
<%@ page import="java.util.*"%><%!
ResultSet rs=null;
String sql=null;
int curr_labid=0;
//add begin
if(request.getParameter("labid")!=null)
curr_labid = Integer.parseInt((String)request.getParameter("labid"));
//add end
int lid=0;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>实验室基本信息查询</title><Script language="JavaScript">
function mysubmit(){
document.myform.submit();
}
</Script>
</head><body>
<center><form name="myform" action="book.jsp" method="post">
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB","sa","");
Statement stmt=conn.createStatement();
%>
<%
sql="select * from Lab";
try{
rs=stmt.executeQuery(sql);
}
catch(Exception e)
{
out.println("访问实验室数据出错!");
return;
}%>
请选择要预约的实验室:
<select name=labid onChange="mysubmit()">
<% while(rs.next())
{
int tmplabid=rs.getInt("Lid");
if(curr_labid==0)
{curr_labid=tmplabid;}
if(curr_labid!=0&&curr_labid==tmplabid){
out.println("<option value="+tmplabid+"selected>"+rs.getString("Lname")+"</option>");
}else
{out.println("<option value="+tmplabid+">"+rs.getString("Lname")+"</option>");}
}
%>
</select>
</form>
<hr>
<table width=640 cellSpacing =1 cellPadding=3 border=0>
<TR align=middle>
<TH >实验室编号</TH>
<TH >实验室名称</TH>
<TH >实验室简介</TH>
<TH >预约</TH>
</TR>
<%
sql="select * from Lab where Lid="+curr_labid;
ResultSet rst=stmt.executeQuery(sql);
%>
<%
int t_labid=0;
String t_labname=null;
String t_labintro=null;
while(rst.next()){
%>
<TR align=center>
<TD>
<%
t_labid=rst.getInt("Lid");
out.println(t_labid);
%> </TD>
<TD>
<%
t_labname=rst.getString("Lname");
out.println(t_labname);
%> </TD>
<TD>
<%
t_labintro=rst.getString("Lintro");
out.println(t_labintro);
%> </TD>
<TD width="69">
<A href=book1.jsp>预约</A>
</TD>
</TR>
<%
}
%>
</table>
<%
session.setAttribute("lid",curr_labid);
%>
</center>
<hr>
</body>
</html>
select的onChange方法是值改变了之后才响应
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.lang.Math.*"%>
<%@ page import="java.util.*"%><%!
ResultSet rs=null;
String sql=null;
int curr_labid=0;
//add begin
if(request.getParameter("labid")!=null)
curr_labid = Integer.parseInt((String)request.getParameter("labid"));
//add end
int lid=0;
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>实验室基本信息查询</title><Script language="JavaScript">
function mysubmit(){
document.myform.submit();
}
</Script>
</head><body>
<center><form name="myform" action="book.jsp" method="post">
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection conn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB","sa","");
Statement stmt=conn.createStatement();
%>
<%
sql="select * from Lab";
try{
rs=stmt.executeQuery(sql);
}
catch(Exception e)
{
out.println("访问实验室数据出错!");
return;
}%>
请选择要预约的实验室:
<select name=labid onChange="mysubmit()">
<% while(rs.next())
{
int tmplabid=rs.getInt("Lid");
if(curr_labid==0)
{curr_labid=tmplabid;}
if(curr_labid!=0&&curr_labid==tmplabid){
out.println("<option value=''></option>");
out.println("<option value="+tmplabid+"selected>"+rs.getString("Lname")+"</option>");
}else
{
out.println("<option value=''></option>");
out.println("<option value="+tmplabid+">"+rs.getString("Lname")+"</option>");}
}
%>
</select>
</form>
<hr>
<table width=640 cellSpacing =1 cellPadding=3 border=0>
<TR align=middle>
<TH >实验室编号</TH>
<TH >实验室名称</TH>
<TH >实验室简介</TH>
<TH >预约</TH>
</TR>
<%
sql="select * from Lab where Lid="+curr_labid;
ResultSet rst=stmt.executeQuery(sql);
%>
<%
int t_labid=0;
String t_labname=null;
String t_labintro=null;
while(rst.next()){
%>
<TR align=center>
<TD>
<%
t_labid=rst.getInt("Lid");
out.println(t_labid);
%> </TD>
<TD>
<%
t_labname=rst.getString("Lname");
out.println(t_labname);
%> </TD>
<TD>
<%
t_labintro=rst.getString("Lintro");
out.println(t_labintro);
%> </TD>
<TD width="69">
<A href=book1.jsp>预约</A>
</TD>
</TR>
<%
}
%>
</table>
<%
session.setAttribute("lid",curr_labid);
%>
</center>
<hr>
</body>
</html>
<%
sql="select * from Lab where Lid="+curr_labid;
ResultSet rst=stmt.executeQuery(sql);
%>这里的curr_labid不会随列表框选项的改变而改变,一直都是指向一个固定值
//add begin
if(request.getParameter("labid")!=null)
curr_labid = Integer.parseInt((String)request.getParameter("labid"));
//add end
这个地方不是重新取了选择狂的值吗?
对了,你改变选择框的值后,页面刷新了没有?
把新代码给你看一下
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.lang.Math.*"%>
<%@ page import="java.util.*"%>
<jsp:useBean id="conn" scope="application" class="jsp.db_conn"/>
<%!
ResultSet rs=null;
String sql=null;
int curr_labid=0;
%>
<%
if(request.getParameter("labid")!=null)
curr_labid=Integer.parseInt((String)request.getParameter("labid"));
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>实验室基本信息查询</title><Script language="JavaScript">
function mysubmit(){
document.myform.submit();
}
</Script>
</head><body>
<center><form name="myform" action="book.jsp" method="post">
<%
sql="select * from Lab";
try{
rs=conn.executeQuery(sql);
}
catch(Exception e)
{
out.println("访问实验室数据出错!");
return;
}%>
请选择要预约的实验室:
<select name=labid onChange="mysubmit()">
<% while(rs.next())
{
int tmplabid=rs.getInt("Lid");
if(curr_labid==0)
{curr_labid=tmplabid;}
if(curr_labid!=0&&curr_labid==tmplabid){
out.println("<option value=''></option>");
out.println("<option value="+tmplabid+" selected>"+rs.getString("Lname")+"</option>");
}else
{
out.println("<option value="+tmplabid+">"+rs.getString("Lname")+"</option>");}
}
%>
</select>
</form>
<hr>
<table width=640 cellSpacing =1 cellPadding=3 border=0>
<TR align=middle>
<TH >实验室编号</TH>
<TH >实验室名称</TH>
<TH >实验室简介</TH>
<TH >预约</TH>
</TR>
<%
sql="select * from Lab where Lid="+curr_labid;
rs=conn.executeQuery(sql);
%>
<%
int t_labid=0;
String t_labname=null;
String t_labintro=null;
while(rs.next()){
%>
<TR align=center>
<TD>
<%
t_labid=rs.getInt("Lid");
out.println(t_labid);
%> </TD>
<TD>
<%
t_labname=rs.getString("Lname");
out.println(t_labname);
%> </TD>
<TD>
<%
t_labintro=rs.getString("Lintro");
out.println(t_labintro);
%> </TD>
<TD width="69">
<A href=book1.jsp>预约</A>
</TD>
</TR>
<%
}
%>
</table>
<%
session.setAttribute("lid",curr_labid);
%>
</center>
<hr>
</body>
</html>