肯定很多人碰到這個問題,是以共享出來,多多交流~
ireport生成的報表嵌入jsp頁面後需要翻頁功能,寫了個翻頁功能
需要兩個參數
1:npage 表示目前讀的是第幾頁
2:pageSize 表示報表一共幾頁
這兩個參數在輸出報表的時候,npage用來指定輸出第幾頁,pageSize可以通過讀取jasperPrint的getPages().size()來擷取
jsp中設定3個div
<div id="reportPanel" style="width:950px;"></div> <!-- 用來顯示報表-->
<div class="dataTables_info" id="dataTable_info"></div> <!-- 用來顯示“第幾頁,共幾頁”的資訊-->
<div class="dataTables_paginate paging_full_numbers" id="dataTable_paginate"></div> <!-- 用來顯示翻頁按鈕的資訊-->
下面是javascript翻頁的代碼:
if(npage>0){
var reportHeight = $('#reportPanel table')[0].clientHeight+250;
if(reportHeight<650) reportHeight=650;
theFrame.height(reportHeight);
$("#dataTable_info").html("第 "+npage+" 頁,共 "+pageSize+" 頁");
var nextPage=parseInt(npage)+1;
$("#dataTable_paginate").append("<a href=\"javascript:getReport(1)\" class=\"paginate_button\" id=\"dataTable_first\">首頁</a>");
if(npage>1){
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+(npage-1)+")\" class=\"paginate_button\" id=\"dataTable_previous\">上一頁</a>");
}
if(npage<=3){
var showLastPage=(pageSize>=5?5:pageSize);
for(var i=1;i<npage;i++){
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+i+")\" class=\"paginate_button\">"+i+"</a>");
}
$("#dataTable_paginate").append("<a class=\"paginate_active\">"+npage+"</a>");
for(var i=nextPage;i<=showLastPage;i++){
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+i+")\" class=\"paginate_button\">"+i+"</a>");
}
}
else{
var showLastPage;
if(pageSize-npage>=2){
showLastPage=parseInt(npage)+2;
for(var i=npage-2;i<npage;i++){
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+i+")\" class=\"paginate_button\">"+i+"</a>");
}
$("#dataTable_paginate").append("<a class=\"paginate_active\">"+npage+"</a>");
for(var i=nextPage;i<=showLastPage;i++){
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+i+")\" class=\"paginate_button\">"+i+"</a>");
}
}
else{
showLastPage=pageSize;
var showBeginPage=pageSize>5?pageSize-4:1;
for(var i=showBeginPage;i<npage;i++){
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+i+")\" class=\"paginate_button\">"+i+"</a>");
}
$("#dataTable_paginate").append("<a class=\"paginate_active\">"+npage+"</a>");
for(var i=nextPage;i<=showLastPage;i++){
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+i+")\" class=\"paginate_button\">"+i+"</a>");
}
}
}
if(npage<pageSize){
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+nextPage+")\" class=\"paginate_button\" id=\"dataTable_next\">下一頁</a>");
}
$("#dataTable_paginate").append("<a href=\"javascript:getReport("+pageSize+")\" class=\"paginate_button\" id=\"dataTable_last\">末頁</a>");
}
else{ //沒有報表顯示的時候顯示的字
$("#dataTable_info").html("第 "+npage+" 頁,共 "+pageSize+" 頁");
}