一个数据列表分页显示,总是显示第一页,无法显示“下一页”,pageNo传值的问题

copy1924 2004-05-02 04:58:18
我想做一个具有分页显示数据库中数据功能的页面,但是页面总是只显示第一页,点击“下一页”和“最后页”一点反应也没有。链接的过程中,状态栏里显示:"?pageNo=2"但是地址栏里却显示:“?%20pageNo=2",我也不知道是为什么?自己猜测是pageNo传值的时候出了点问题,或是<a href=.....>里出了问题。但也不知道哪里出了问题,应该怎么改,所以请各位高手帮一下忙了。
(以下是我的代码,稍微长了一点)
<%@ page contentType="text/html; charset=gb2312" import="java.sql.*" %>
<jsp:useBean id="showvindays" scope="page" class="classes.connect"/>
<html>
<head>
<title>入库明细报表</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body background="2people.jpg">
<%!
String pageNo;
int i, j,k;
String StockNo,ProductNo,CommodityName,DepotNo,Remark,EmployeeNo,OrderChecker;
Date InDate,MakeDate;
int Quantity;
float Price,Amount;
%>

<%

int total;
total=0;
String strSQLsize;
strSQLsize="SELECT StockNo FROM VInDay where InDate is not null";
ResultSet RSsize=showvindays.executeQuery(strSQLsize);
while(RSsize.next())
{
total=total+1;
}
RSsize.close();
%>
<%//pageNo表示请求的是第几页
pageNo=request.getParameter("pageNo");
//out.println(pageNo);
//如果pageNo为null值,则赋值为1
if(pageNo==null)
{
pageNo="1";
}

//j表示的是pageNo对应的整型值
j=Integer.parseInt(pageNo);
//当j的值小于1时,赋值为1
if(j<1)
j=1;
//当j的值大于总页数时,赋值为total
if(j>total)
j=total;
%>
<% //读取数据库记录

try
{
String strSQL="select * from VInDay where InDate is not null order by InDate desc";
ResultSet RSa=showvindays.executeQuery(strSQL);
//记录集移动到相应的位置
//j为逻辑页数

for (k=0;k<j-1;k++)
{
RSa.next();
}

i=0;
k=1;


while(RSa.next())
{
i=i+1;
//超过1条
if(i==2)
{
k=0;
break;
}


StockNo = RSa.getString(1);//out.println(StockNo);
DepotNo=RSa.getString(2);
InDate=RSa.getDate(3);
ProductNo = RSa.getString(4);
CommodityName=RSa.getString(5);
Price = RSa.getFloat(6);
Quantity= RSa.getInt(7);
Amount= RSa.getFloat(8);
Remark = RSa.getString(9);
EmployeeNo=RSa.getString(10);
OrderChecker = RSa.getString(11);
MakeDate=RSa.getDate(12);


}
i=i-k;
//关闭记录集

RSa.close();
}
catch(Exception ex) //捕捉异常
{
ex.printStackTrace();
}
%>
<%//以下代码行是用来显示页面数的
//当j大于1时,就会显示“第一页”、“上一页”字样
if(j>1)
{
%>
<a href="showvindays.jsp?pageNo=1">第一页</a>
<%
int ii=Integer.parseInt(pageNo,10);
if(ii>1)
ii=ii-1;
String ssTmp=Integer.toString(ii);
%>
<a href="showvindays.jsp?pageNo=<%=ssTmp%>">上一页</a>
<%
}
//同样地,当j小于总页数时,就会显示“下一页”,“最后页”字样
if(j<total)
{
int ii=Integer.parseInt(pageNo,10);
if(ii<total)
ii=ii+1;
String ssTmp=Integer.toString(ii);
//out.println(ssTmp);

%>

<a href="showvindays.jsp? pageNo=<%=ssTmp%>">下一页</a>
<a href="showvindays.jsp?pageNo=<%=total%>">最后页</a>
<%
}
if (total<j)
j=total;
%>


<p>                    <font color="#FF0000" size="5" face="华文中宋">入库明细报表</font></p>

<table width="58%" border="1" align="center">
<tr>
<td>入库日期</td>
<td align="left"><%=InDate%></td>
</tr>
<tr>
<td width="40%">已入库采购单编码</td>
<td width="60%" align="left" ><%=StockNo%> </td>
</tr>
<tr>
<td>所到仓位编码</td>
<td align="left"><%=DepotNo%></td>
</tr>
<tr>
<td>商品编号</td>
<td align="left"><%=ProductNo%></td>
</tr>
<tr>
<td>商品名称</td>
<td align="left"><%=CommodityName%></td>
</tr>
<tr>
<td>商品单价</td>
<td align="left"><%=Price%></td>
</tr>
<tr>
<td>商品数量</td>
<td align="left"><%=Quantity%></td>
</tr>
<tr>
<td>商品总价</td>
<td align="left"><%=Amount%></td>
</tr>
<tr>
<td>已入库采购单备注</td>
<td align="left"><%=Remark%></td>
</tr>
<tr>
<tr>
<td>录入员编码</td>
<td><%=EmployeeNo%></td>
</tr>
<tr>
<td>复核员编码</td>
<td><%=OrderChecker%></td>
</tr>
<td>此采购单生成日期</td>
<td align="left"><%=MakeDate%></td>
</tr>

</table>
<tr><td height="1" bgcolor=""colspan="2">
<hr color="#3399ff">
结果共<%=total%>页,显示第<%=j%>页</td>
<td algin="left" colspan="2" height="32">
</body>
</html>

大家可以重点看一下: pageNo=request.getParameter("pageNo");
这一句是不是可以这样传,
或是:<a href="showvindays.jsp? pageNo=<%=ssTmp%>">下一页</a>
是不是可以这样链接过去?
其他我也是真的不太明白哪里会出问题了.

...全文
278 11 点赞 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
copy1924 2004-05-09
谢谢楼上各位,在切磋中长了很多知识.结帖.
  • 打赏
  • 举报
回复
quinie 2004-05-09
天哪,前楼这位的代码也太长了一点了。我有个比较好的分页显示bean.要的话可以跟我联系:qq:53828155
  • 打赏
  • 举报
回复
lijin19791002 2004-05-05
给你个我写的分页显示吧,希望对你有帮助。
<%@page import="java.sql.*"%>
<%@page contentType="text/html;charset=gb2312"%>
<script language="JavaScript">
function submitValue(){
document.main.submit();
return;
}
</script><!--这一段jscript代码,对查询输入进行验证-->
<head>
<script language="JavaScript" src="Docu.js"></script>
<link href="../images/410emd.css" rel=stylesheet>
</head>
<body>
<form name=main action="FindDocu.jsp">
<table width="100%" border="0" align="center" cellspacing="0" bgcolor="#FFFFFF" style="border-left:1px #8CA5B5 solid; border-top:1px #8CA5B5 solid; border-right:1px #8CA5B5 solid; border-bottom:1px #8CA5B5 solid;">
<tr bgcolor="#FFFFFF" style='border:1px #8CA5B5 solid;font-size: 9pt;'>
<td width="5%" align="center"><img border="0" src="../images/projectMgr/b_contract.gif" width="32" height="30"></td>
<td width="15%" align="left"><font class="s" color="#104A7B"><b>设备文档管理</b> </font></td>
<td width="80%">
<input class="Bsbttn" type="button" value="新增设备文档信息" onClick="window.open('AddDocu.jsp', 'Sample', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width=700,height=550,left=50,top=50' )" name="AddButt">
<input class="Bsbttn" type="button" value="修改文档信息" onClick="EditDocu()" name="DelButt">
<input class="Bsbttn" type="button" value="文档信息删除" onClick="DelDocu()" name="DetailButt">
</td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="5" width="100%">
<tr>
<td width="11%"> <p align="left">
<input type="checkbox" name="SetAll" value="0" onclick=All()>
<A HREF="javascript:SetAll()" id=selectall><font size="2">全部选定</font></A></td>
<td width="4%"> <p align="left"><img border="0" src="../images/projectMgr/S_SEARCH.GIF" width="28" height="28"></td>
<td width="85%"><font class="s" color="#104A7B"><b>
<select name="cxlx">
<option value="0">-请选择查询条件-</option>
<option value="1">计划序号</option>
<option value="2">项目名称</option>
<option value="3">设备名称</option>
<option value="4">使用单位</option>
<option value="5">项目负责人</option>
</select>

<input type="text" name="item" size="30">
<input class="Bsbttn" type="button" name="Submit" value="查询" onclick="submitValue()">
</font></td>
</tr>
</table>
<table border="0" align="center" cellspacing="0" width="100%" >
<tr bgcolor="#3280BE" >
<td width="5%" align="center" height="20" style="border-left:1px #FFFFFF solid; border-top:1px #FFFFFF solid; border-right:1px #FFFFFF solid; border-bottom:1px #FFFFFF solid;"><font size="2" color="#FFFFFF"><b>选择</b></font></td>
<td width="15%" align="center" height="20" style="border-left:1px #FFFFFF solid; border-top:1px #FFFFFF solid; border-right:1px #FFFFFF solid; border-bottom:1px #FFFFFF solid;"><font size="2" color="#FFFFFF"><b>项目名称</b></font></td>
<td width="20%" align="center" height="20" style="border-left:1px #FFFFFF solid; border-top:1px #FFFFFF solid; border-right:1px #FFFFFF solid; border-bottom:1px #FFFFFF solid;"><font size="2" color="#FFFFFF"><b>设备名称</b></font></td>
<td width="10%" align="center" height="20" style="border-left:1px #FFFFFF solid; border-top:1px #FFFFFF solid; border-right:1px #FFFFFF solid; border-bottom:1px #FFFFFF solid;"><font size="2" color="#FFFFFF"><b>设备型号</b></font></td>
<td width="20%" align="center" height="20" style="border-left:1px #FFFFFF solid; border-top:1px #FFFFFF solid; border-right:1px #FFFFFF solid; border-bottom:1px #FFFFFF solid;"><font size="2" color="#FFFFFF"><b>生产厂家</b></font></td>
<td width="20%" align="center" height="20" style="border-left:1px #FFFFFF solid; border-top:1px #FFFFFF solid; border-right:1px #FFFFFF solid; border-bottom:1px #FFFFFF solid;"><font size="2" color="#FFFFFF"><b>设备位置</b></font></td>
<td width="10%" align="center" height="20" style="border-left:1px #FFFFFF solid; border-top:1px #FFFFFF solid; border-right:1px #FFFFFF solid; border-bottom:1px #FFFFFF solid;"><font size="2" color="#FFFFFF"><b>项目负责人</b></font></td>
</tr>
<!--上面的这一段HTML代码用于显示表头,由FrontPage生成-->
<!--jsp:useBean id="pageDownBean" scope="session" class="dbs_bean.pageDownBean"/-->
<jsp:useBean id="sqlbean" scope="session" class="dbs_bean.dbs_bean"/>
<%
int intPageSize=10; //一页显示的记录数
int intRowCount=0; //记录总数
int intPageCount=0 ; //总页数
int intPage=0 ; //待显示页码
String strPage=request.getParameter("page");
int j;// 设置一页显示的记录数
if(strPage == null) {//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage=1;
}
else{ //将字符串转换成整型
intPage=Integer.parseInt(strPage);
if(intPage<1){intPage = 1;}
}
String sqlString= "SELECT * FROM T_SBWD ORDER BY ID DESC";
ResultSet rs=sqlbean.executeQuery(sqlString);
rs.last();
intRowCount =rs.getRow(); //记算总页数
intPageCount = (intRowCount+intPageSize-1 )/ intPageSize;
//调整待显示的页码
if(intPage>intPageCount){
intPage = intPageCount;
}
int i=0,ii=1;
String tr="";
if(intPageCount>0){//将记录指针定位到待显示页的第一条记录上
rs.absolute((intPage-1) * intPageSize + 1);
j=0;
while(j<intPageSize && !rs.isAfterLast()){
if(i==ii){
tr="<tr bgcolor='#DBEAF5'>"; //对于不同的表格设置不同颜色
ii++;
}
else{
tr="<tr bgcolor='#ffffff'>"; //对于不同的表格设置不同颜色
i++;
}
//上面的程序用于使表格的行的颜色,绿色和白色交替显示
String id=rs.getString("ID");
String xmmc=rs.getString("XMMC"); //先从合同信息表中取出要用到的数据
String sbmc=rs.getString("SBMC");
String sbxh=rs.getString("SBXH");
String sccj=rs.getString("SCCJ");
String sbwz=rs.getString("SBWZ");
String xmfzr=rs.getString("XMFZR");
out.println("<td width='5%'><p align='center'><input type='checkbox' name=chx"+id+"></p></td>");
out.println("<td width='15%'><font size='2' color='#000000'><p align='center'>"+xmmc+"</p></font></td>");
out.println("<td width='20%'><font size='2' color='#000000'><p align='center'><a href='#' onclick=\"window.open('DocuDeal.jsp?"+id+"','newTask', 'scrollbars=yes,width=700,height=550,left=50,top=50')\">"+sbmc+"</p></font></td>");
out.println("<td width='10%'><font size='2' color='#000000'><p align='center'>"+sbxh+"</p></font></td>");
out.println("<td width='20%'><font size='2' color='#000000'><p align='center'>"+sccj+"</p></font></td>");
out.println("<td width='20%'><font size='2' color='#000000'><p align='center'>"+sbwz+"</p></font></td>");
out.println("<td width='10%'><font size='2' color='#000000'><p align='center'>"+xmfzr+"</p></font></td>");
out.println("</tr>");
rs.next();
j++;
}
}
sqlbean.getStmt().close();
sqlbean.getCon().close();
%>
</table>
<p align=center><font size="2"> 第<%=intPage%>页  共<%=intPageCount%>页</font>   
<%{%>
<a href="DocuMgr.jsp?page=<%=intPage+1%>"><img border="0" src="../images/scrolldown.gif" width="16" height="16"><font size="2"> 下一页</font></a>
<%}%>  
<%{%>
<a href="DocuMgr.jsp?page=<%=intPage-1%>"><img border="0" src="../images/scrollup.gif" width="16" height="16"><font size="2">上一页</font></a>
<%}%></p>
</form>
<p style="line-height: 100%; margin-top: 0; margin-bottom: 0" align="center"> </p>
</body>
  • 打赏
  • 举报
回复
copy1924 2004-05-05
真的很专业,谢谢楼上的代码,鉴于此我收回曾说过的话,的确来这里交流经验才是最重要的。
  • 打赏
  • 举报
回复
panpan221 2004-05-04
新手学习,看一下
  • 打赏
  • 举报
回复
jinsfree 2004-05-04
好像不行,我有好多次提了的问题都没有人回答,一样放分出去了
其实你看看还是有人出了点子的,只是他们没有清自调试,只是说出可能出现的问题,他们也是有功的哦
分数不重要的,主要这里是互相学习!!
  • 打赏
  • 举报
回复
copy1924 2004-05-04
问题已经解决了,只是我在?pageNo之间多了个空格,去掉就非常正确了,在此也提醒各位编成的同仁,一定不要小看一个空格。
但是,为什么我就不能删除掉这个帖子了呢?没有人回答出我这个问题,不会是非要让我把分数给掉才能结帖吧?(这显然很不公平的)
  • 打赏
  • 举报
回复
nimbel 2004-05-04
我也在做类似的东西,使用url重写时使用String ssTmp=Integer.toString(ii);转化为字符串似乎没有必要,直接写整型(在<%= %>中),你可以试试
  • 打赏
  • 举报
回复
copy1924 2004-05-04
up
  • 打赏
  • 举报
回复
copy1924 2004-05-02
up
  • 打赏
  • 举报
回复
copy1924 2004-05-02
大家都去吃饭了吧,那我在顶一下。
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-05-02 04:58
社区公告
暂无公告