jsp 查询结果不能进行分页,分页只对全部记录进行分页,该如何解决?
各位大虾,我做了个分页的jsp,在上方有个查询按钮,现在分页效果做出来了,但是这个分页只是对全部记录进行分页,而对于查询的结果点击翻页,跳出来的仍旧是全部记录的分页效果。该怎么解决?谢谢。
原码:
<%@ page import="java.lang.*,java.io.*,java.sql.*,java.util.*" contentType="text/html;charset=gb2312" %>
<jsp:useBean class="conndb.condb" id="con" scope="page">
</jsp:useBean>
<%@ page import="conndb.Str"%>
<html>
<head>
<title>无标题文档</title>
<link href="../css/style1.css" rel="stylesheet">
</head>
<body>
<form action="user_index.jsp">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td wdith="9%">员工姓名:</td>
<td width="14%"><input name="UserName" type="text" class="txt_grey"></td>
<td width="10%" align="center">
<input name="Submit" type="submit" class="btn_grey" value="查询" border="0"></td></tr>
</table>
<%
String UserName=request.getParameter("UserName");
Str str=new Str();
String sql="";
if(UserName==null){
sql="select * from users";
}
else if(UserName==""){
sql="select * from users";
}
else{
sql="select * from users where user_id='"+str.toChinese(UserName)+"'";
}
ResultSet rs=con.getRs(sql);
%>
<hr color="#639ACE">
<table width="100%" height="73" border="1" cellpadding="0" cellspacing="0" bordercolor="#D7EBFF" bordercolorlight="#FFFFFF" bordercolordark="#D7EBFF" bgcolor="#EEF2F9">
<tr align="center" valign="middle">
<td width="12%" height="25">用户名</td>
<td width="9%" height="25">所属供电分公司</td>
<td width="12%" height="25">操作</td>
</tr>
<%
//翻页后要防止刷新信息丢失(尚未解决).
String name="";
String region="";
int pagesize=5;
int showpage=1;
int rowcount=0;
int pagecount=0;
if(!rs.next()){
out.println("没有添加成员");
}else{
rs.last();
rowcount=rs.getRow();
pagecount=(((rowcount%pagesize)==0)?(rowcount/pagesize):(rowcount/pagesize+1));
String topage=request.getParameter("topage");
if(topage!=null){
showpage=Integer.parseInt(topage);
if(showpage>pagecount){
showpage=pagecount;
}else if(showpage<=0){
showpage=1;
}
}
rs.absolute((showpage-1)*pagesize+1);
for(int i=1;i<=pagesize;i++){
%>
<tr align="center" valign="middle" bgcolor="#F9F9FB">
<td height="23"><% String id=rs.getString(1);out.println(id);%></td>
<td height="23"><%=rs.getString(2)%></td>
<td height="23" valign="bottom"><a href="usermodify.jsp?id=<%=id%>" target="mainName">修改</a>/<a href="userdel.jsp?id=<%=id%>" target="mainName">删除</a></td>
</tr>
<%
if(!rs.next())
break;
}
}
%>
<tr align="center" valign="middle" bgcolor="#DFE7F0">
<td height="23" colspan="7" bgcolor="#EEF2F9"> <a href="user_index.jsp?topage=<%=showpage-1%>">前一页</a> <a href="user_index.jsp?topage=<%=showpage+1%>">后一页</a></td>
<td height="23" bgcolor="#EEF2F9">第<%=showpage%>页,共<%=pagecount%>页</td>
<td height="23" bgcolor="#EEF2F9">共:<%=rowcount%>名员工</td>
<td height="23" bgcolor="#EEF2F9">每页5名员工</td>
</tr>
<%
try{
con.close();
con=null;
}catch(Exception e){
}
%>
</table>
</form>
</body>
</html>
由于初学jsp,所以把什么东西都写在页面上了,望大家海涵。
[解决办法]
是翻页丢失的结果,你每次翻页的时候都会重新刷新当前页,然而你并没有把UserName这个参数传递回去;而且lz那个每次都根据传入页数移动游标的方法似乎不太有效率啊,因为每次都是全部查询出结果再操作游标的;
个人认为应该改动下sql语句,如果是mysql数据库则用下limit条件来查询;sqlserver就用not in吧这样只查询部分结果;而且不要忘记翻页的连接不光要传页号,还得带着查询条件~~
[解决办法]
这么说吧,在输入查询的地方应该有个input
eg:<input type="text" name="tranFact" >
在<from>上面加上<%String tranfact=request.getParameter("tranFact");%>
然后action= "user_index.jsp?tranfact=<%tranfact%> "