用html标签写“上一页”和“下一页”按钮,用于点击时生成分页效果。
<div>
<span>
<input name="" type="button" οnclick="upPage(this)" value="上一页" /> 刚进来时,让当前页等于1,如果点击过,就让当前页减1
</span>
<span>
<%for(int i=0;i<pageBean.getIntValue("pageCount");i++){%>
<a class="alink" src="#" οnclick="jumpPage(this)"><%=i+1%></a> 在handler里获取到总数据条数,有多少条循环出多少a标签,是从零开始计数的,要+1
<%}%>
</span>
<span>
<input name="" type="button" οnclick="nextPage(this)" value="下一页" />
</span>
</div>
<input id="startIndex" label="当前页码" name="startIndex" type="hidden" value="<%=pageBean.inputValue("startIndex")%>" size="24" class="text" /> 当前页码设隐藏域
写js方法控制按钮
<script>
function nextPage(bt){
if($("#startIndex").val()==<%=pageBean.getIntValue("pageCount")%>){ //总条数赋给隐藏域,就是最后一页
$(bt).attr("disabled","disabled");
alert("当前已经是最后一页!")//最后一页时给出提示
return;
}
$("#startIndex").val(parseInt($("#startIndex").val())+1)//不是最后一页,就做加1操作。
refresh();
}
function upPage(bt){
if($("#startIndex").val()==1){
$(bt).attr("disabled","disabled");
alert("当前已经是第一页!")//是第一页时给出提示
return;
}
$("#startIndex").val(parseInt($("#startIndex").val())-1)//不是第一页,就做减1操作
refresh();
}
function jumpPage(object){ 获取到所有的a标签
$("#startIndex").val($(object).text()); 获取到a标签的内容,赋给隐藏域
$(object).css("font-size","80px"); 被选中的a标签样式变大
refresh(); //刷新页面
}
function changePageFontColor(){ 得到所有a标签
$(".alink").each(function(){
if($(this).text()==$("#startIndex").val()||$(this).next().text()==$("#startIndex").val()||$(this).prev().text()==$("#startIndex").val()){判断a标签的内容,就是判断上一页,当前页和下一页
if($(this).text()==$("#startIndex").val()){满足上个判断,在判断当前页是否等于隐藏域
$(this).css("font-size","20px"); 等于样式变大
}
}else{
$(this).text("");其余页数清空,就是不显示
}
});
}
changePageFontColor(); 都走完后调一次这方法
</script>
在控制成控制分页数据
分页公式:起始值=当前页-1*尾数(MySQL里的limit(当前页,尾数)(从第几开始,显示多少条))
public void createPage(DataParam param){
List<DataRow> rsList = getService().findRecords(param); //查出所有数据
int step=5; //每页显示多少条
int rsListSize=rsList.size(); //得到数据总数
int pageCount=rsListSize/step; //除以每页显示的条数
if(rsListSize%step!=0){ //有余数加一页
pageCount++;
}
this.setAttribute("pageCount",pageCount);//一共有多少页handler用法
request.setAttribute("pageCount", pageCount); //向页面返回有多少页portlet用法
if(StringUtil.isNullOrEmpty(param.get("startIndex"))){//等于空说明是刚进来,就给他put成零,limit从0开始
param.put("startIndex",0);
this.setAttribute("startIndex",1);//set到页面上的默认值是1
}else{
param.put("startIndex",(param.getInt("startIndex")-1)*step); //当前页不为空就 套用分页公式计算:起始值=当前页-1*尾数,sql:limit 当前页,尾数(从第几开始,显示多少条)
}
param.put("step",step);
rsList= getService().findPageRecords(param);调方法查sql,把显示数step和当前页数startIndex传过去
request.setAttribute("rsList", rsList);