关于分页显示的问题,高分求助

yanglinglong 2003-11-26 11:50:25
在JSP查寻中,上下页的连接只对默认参数的查寻结果正确,如果我输入其他参数,程序能够正确判断中新参数所检索出的总数据的总页数并正确显示了第一页的内容,但是点击“下一页”时就会自动连接到默认参数所检索出数据的下一页。如何解决,恳请大家的帮助。

<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.text.*" %>
<%@ page import="com.hand.hayao.reports.*" %>
<%@ page import="com.hand.hayao.reports.vo.*" %>
<%@ page import="com.hand.common.db.*"%>
<%@ page import="com.hand.hayao.*"%>
<%@ include file="validation.jsp" %>


<%
String dateStr ="";
String currentDate ="";
Vector itemSalesList = new Vector();
Connection conn = null;
boolean isValideDate = false;

try{
conn = ConnectionManager.getConnection(AppManager.JDBC_NAME);
if (!sessionManager.hasPrivilege(conn, new Long(1))) {
sessionManager.showMsg(response, sessionManager.MSG_WARNING, "您没有权限查看此项内容");
return;
}

java.sql.Date current = DbUtils.getOracleCurrentDT(conn);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
currentDate = String.valueOf(Integer.parseInt(sdf.format(current))-1);
dateStr = request.getParameter("datestr")==null?currentDate: request.getParameter("datestr");

isValideDate = DbUtils.isValideDateString(conn, dateStr);

itemSalesList = InterfaceCuxItemSalesDetai.queryByDateAndOrder(conn, dateStr);

} catch(Exception e) {
e.printStackTrace();
throw e;
} finally {
conn.close();
}
%>
<%
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
java.lang.String strPage;//从地址栏中取到的page值
java.lang.String tt;
//设置一页显示的记录数
intPageSize = 21;
//取得待显示页码

tt=request.getParameter("aa");
strPage = request.getParameter("page");
if(strPage==null || tt=="bb"){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
intRowCount = itemSalesList.size();

//记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;

//调整待显示的页码

if (intPageCount >1 && tt=="bb"){
if(intPage>intPageCount) intPage = intPageCount;}

int j=intPageSize*(intPage-1);
int end=0;
if((intPageSize*intPage-1)>=intRowCount)
{
end=intRowCount;
}
else
{
end=intPageSize*intPage;
}
if(intPageCount==0) intPageCount=1;%>


<html>
<head><title>查寻</title></head>

<script language="JavaScript">

</script>

<body leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0">
<%@ include file="header.jsp"%>

<table width="980" height="25" border="0" align="center" cellpadding="0" cellspacing="0">
<form name="form1" method="get" action="../jsp/arrangebygoods.jsp">
<tr>
<td background="../images/navbar.gif"><font size="2">请输入查询日期:</font>
<INPUT TYPE="text" NAME="datestr" SIZE="10" VALUE= <%=dateStr=="sysdate"?"today":dateStr%>>
<INPUT name="submit" TYPE="submit" VALUE="确定">
(yyyymm) </td>
</tr>
</form>
</table>

<HR width="980">

  销量排名(按物品):<BR>

<TABLE width="980" border="0" align="center">
<TR bgcolor="#4C83BB">

<TD width="42" nowrap align="center"><font color="#FFFFFF">排名</font></TD>

<TD width="435" nowrap align="center"><font color="#FFFFFF">物品名称</font></TD>

<TD width="187" nowrap align="center"><font color="#FFFFFF">销售数量</font></TD>

<TD width="298" nowrap align="center"><font color="#FFFFFF">销售金额</font></TD>
</TR>
<%
int i;
InterfaceCuxItemSalesDetaiVO vo = null;
for(i=j;i<end;i++) {
vo = (InterfaceCuxItemSalesDetaiVO) itemSalesList.get(i);
%>
<TR bgcolor="#99CC99">
<TD width="42" align="center" nowrap><font size="2"><%=vo.getOrderSalesForDay()%></font></TD>

<TD width="435" align="left" nowrap ><font size="2"><%=vo.getItemDescription()%></font></TD>

<TD width="187" align="right" nowrap><font size="2"><%=vo.getSalesQuantities()%></font></TD>

<TD width="298" align="right" nowrap><font size="2"><%=vo.getSalesAmmount()%></font></TD>
</TR>
<%
}
%>
</TABLE>
<%//根据情况调整一下连接%>

<div align="center">第<%=intPage%>页 共<%=intPageCount%>页
<%if(intPage>1){%>
<a href="../jsp/arrangebygoods.jsp?page=<%=intPage-1%>">上一页</a>
<%}%>
<%if(intPage<intPageCount){%>
<a href="../jsp/arrangebygoods.jsp?page=<%=intPage+1%>">下一页</a>
<%}%>
</div>

<HR align="center" width="980">
</body>
</html>
...全文
44 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyj0243122 2003-11-28
  • 打赏
  • 举报
回复
String temp="";//在前面定义
<%if(intPage>1){%>
<a href="../jsp/arrangebygoods.jsp?page=<%=intPage-1%>&dateStr=<%=dateStr%>">上一页</a>
<%}%>
<%if(intPage<intPageCount){%>
<a href="../jsp/arrangebygoods.jsp?page=<%=intPage+1%>&dateStr=<%=dateStr%>">下一页</a>
<%}%>
yanglinglong 2003-11-26
  • 打赏
  • 举报
回复
参数放到SESSION里怎么实现阿,能用我的代码详细说明吗
qiume 2003-11-26
  • 打赏
  • 举报
回复
我也用楼上的方法
killerdanny 2003-11-26
  • 打赏
  • 举报
回复
把参数放到SESSION里
flyingadam 2003-11-26
  • 打赏
  • 举报
回复
我把操作数据库的业务逻辑写成一个类了
flyingadam 2003-11-26
  • 打赏
  • 举报
回复
我的呕心代码,希望对你有用
flyingadam 2003-11-26
  • 打赏
  • 举报
回复
string sql="xxx";
int rowsperpage=15;//一页显示的记录数
int totalofrows;//记录总数
int totalofpages;//总页数
int curpage;
String strPage;
strPage=request.getParameter("pageno");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
curpage=1;
}else{//将字符串转换成整型
curpage=java.lang.Integer.parseInt(strPage);
if(curpage<1){
curpage=1;
}
}

ResultSet rs = RegisterBean.executesql(sql);
if(rs.next()){
rs.last();
totalofrows = rs.getRow(); // 计算总数据条数
float sum=0,sum1=0;
totalofpages = (totalofrows+rowsperpage-1)/rowsperpage; //计算总页数

if(curpage>totalofpages){
curpage=totalofpages;
}
if(totalofpages>0){
rs.absolute((curpage-1) * rowsperpage + 1); // //将记录指针定位到待显示页的第一条记录上

}
int i=0;
do{


%>
<tr>
<td bordercolor="#CCCCCC" bgcolor="#FFFFFF"><font color="black" style=font-size:11px;><%=i+1+(curpage-1)*rowsperpage%></Font>

</td>
<td bordercolor="#CCCCCC" bgcolor="#FFFFFF"><font color="black" style=font-size:11px;><%=rs.getString("SEQNO_INP01")%></Font>
</td>
<td bordercolor="#CCCCCC" bgcolor="#FFFFFF"><%out.println(storename);%><font color="black" style=font-size:11px;>[<%=rs.getString("STRNO_INP01")%>]</Font></td>
<td bordercolor="#CCCCCC" bgcolor="#FFFFFF" align=right><font color="black" style=font-size:11px;><%=rs.getFloat("AMT_INP01")%></Font></td>
<td bordercolor="#CCCCCC" bgcolor="#FFFFFF" align=right><font color="black" style=font-size:11px;><%=rs.getFloat("TAX_INP01")%></Font></td>
<td bordercolor="#CCCCCC" bgcolor="#FFFFFF"><font color="black" style=font-size:11px;><%=rs.getString("date1")%></Font></td>
</tr>
<%

rs.next();
i++;


}
while(i<rowsperpage && !rs.isAfterLast());
}

<tr><td bordercolor="#CCCCCC" bgcolor="#FFFFFF" colspan=10 align=right>共<%=totalofrows%>条数据 第<%=curpage%>页 共<%=totalofpages%>页(每页<%=rowsperpage%>行)


<% if(curpage>1){%>
<a href='index.jsp?pageno=<%=curpage-1%>&type=<%=type%>&searchtype=<%=searchtype%>&action=<%=action%>&year2=<%=year2%>&month2=<%=month2%>&day2=<%=day2%>&year3=<%=year3%>&month3=<%=month3%>&day3=<%=day3%>&orderno=<%=orderno%>&category=<%=category%>&dateselect=<%=dateselect%>'>上一页</a><%}%>

<%
if(curpage<totalofpages){%>
<a href='index.jsp?pageno=<%=curpage+1%>&type=<%=type%>&searchtype=<%=searchtype%>&action=<%=action%>&year2=<%=year2%>&month2=<%=month2%>&day2=<%=day2%>&year3=<%=year3%>&month3=<%=month3%>&day3=<%=day3%>&orderno=<%=orderno%>&category=<%=category%>&dateselect=<%=dateselect%>'>下一页</a><%}%>
转到至第<select name=page onchange="location.replace('index.jsp?type=<%=type%>&searchtype=<%=searchtype%>&action=<%=action%>&year2=<%=year2%>&month2=<%=month2%>&&day2=<%=day2%>&year3=<%=year3%>&month3=<%=month3%>&day3=<%=day3%>&orderno=<%=orderno%>&category=<%=category%>&dateselect=<%=dateselect%>&pageno='+this.value)">
<% for(i=1;i<=totalofpages;i++) {
if (i== curpage){
%>
<OPTION selected value=<%=i%>><%=i%></OPTION>
<%}else{%>
<OPTION value=<%=i%>><%=i%></OPTION>
<%}
}
%>
</select>页


</td></tr>
<%

rs.close();
String kill = RegisterBean.killconnection();
IT源哥 2003-11-26
  • 打赏
  • 举报
回复
先给你个翻页显示的吧,是连db2的,你改一下驱动就可以了
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title></title>
</head>
<body>
<%
java.sql.Connection sqlCon;
java.sql.Statement sqlStmt;
java.sql.ResultSet sqlRst;
java.lang.String strCon;
java.lang.String strSQL;
int intPageSize;
int intRowCount;
int intPageCount;
int intPage;
java.lang.String strPage;
int i,j,k;
intPageSize = 10;
strPage = request.getParameter("page");
if(strPage==null){
intPage = 1;
} else{
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1; }
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
strCon = "jdbc:db2:sample";
sqlCon = java.sql.DriverManager.getConnection(strCon,"","");
sqlStmt = sqlCon.createStatement();
strSQL = "select count(*) from org";
sqlRst = sqlStmt.executeQuery(strSQL);
sqlRst.next();
intRowCount = sqlRst.getInt(1);
sqlRst.close();
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
if(intPage>intPageCount) intPage = intPageCount;
strSQL = "select * from org";
sqlRst = sqlStmt.executeQuery(strSQL);
i = (intPage-1) * intPageSize;
for(j=0;j<i;j++) sqlRst.next(); %>
<table border="1">
<tr>
<td colspan=5 align=center>
<%=intPage%>/<%=intPageCount%>
<%if(intPage != 1){%>
<a href="pagedb2.jsp?page=1">first</a>
<%}else{%>
first
<%}%>
<%if(intPage>1){%>
<a href="pagedb2.jsp?page=<%=intPage-1%>"><<</a>
<%
}else{
%>
<<
<%}%>
<%if(intPage<intPageCount){%>
<a href="pagedb2.jsp?page=<%=intPage+1%>">>></a>
<%
}else{
%>
>>
<%}%>
<%if(intPage != intPageCount){%>
<a href="pagedb2.jsp?page=<%=intPageCount%>">last</a>
<%}else{%>
last
<%}%>
all<%=intRowCount%>row
</td>
</tr>
<tr>
<td>deptnumb</td>
<td>deptname</td>
<td>manage</td>
<td>division</td>
<td>location</td>
</tr>
<%
i = 0;
while(i<intPageSize && sqlRst.next()){ %>
<tr>
<td><%=sqlRst.getString(1)%></td>
<td><%=sqlRst.getString(2)%></td>
<td><%=sqlRst.getString(3)%></td>
<td><%=sqlRst.getString(4)%></td>
<td><%=sqlRst.getString(4)%></td>
</tr>
<% i++; } %>
</table>
<%
sqlRst.close();
sqlStmt.close();
sqlCon.close();
%>
</body>
</html>

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧