本文以填報報表為例,通過分頁的方式,來解決大數(shù)據(jù)集展示的問題。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),霞浦企業(yè)網(wǎng)站建設(shè),霞浦品牌網(wǎng)站建設(shè),網(wǎng)站定制,霞浦網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,霞浦網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
實現(xiàn)的思想就是通過在SQL里篩選部分數(shù)據(jù)庫數(shù)據(jù),以達到瀏覽器可以合理的展示報表頁面。(數(shù)據(jù)分段,語句我這采用的是MySQL,如果要用其他數(shù)據(jù)庫,請查看FineReport幫助文檔)
步驟一:打開fenye.cpt文件。
模板界面如下

兩個ds,和一部分數(shù)據(jù),及隱藏的一行。
隱藏一行內(nèi)容如下

這里數(shù)據(jù)的功能會在下面說起。
ds1 里的內(nèi)容如下

語句內(nèi)容 SELECT * from aaa limit ${f},${p}
目的是從第${f}跳開始,選擇${p}數(shù)據(jù)(這個$p就是展示的頁數(shù),$f的計算可以下面公式($page-1)*$p,mysql的limit的偏移量是從0開始)。
在模板參數(shù)里,我設(shè)置了他們的默認值

$P=20
$page=1;
這個和全局參數(shù)同理,在模板預(yù)覽的時候是看不到數(shù)據(jù)的,必須到展示頁面的時候參數(shù)才通過url傳進來。
ds2里的內(nèi)容如下

這個語句就比較簡單就是求數(shù)據(jù)總數(shù)再除以每頁頁數(shù),就能得到總頁數(shù)。
報表主體

第一行的數(shù)據(jù)分別是前一頁,后一頁,總頁數(shù)和當前頁以及一個/,用來在工具欄里展示上一頁和下一頁等操作使用的,這里正常是不顯示的,所以我們先屏蔽了(隱藏)。其他的就是用戶數(shù)據(jù)的展示了。
為了展示報表能和我們正常報表一樣,我們還需要做什么?

這里就需要寫代碼能實現(xiàn)上圖的效果了。
點開填報預(yù)覽的齒輪

可以看到我們這里用了7個自定義按鈕和一個加載結(jié)束事件
加載結(jié)束事件的代碼如下:
var toolbar = contentPane.toolbar;
var items = toolbar.options.items;
var customButton=items[2];//JQUERY取我們的工具欄上的按鈕.items[2]代表的是第三個,也就是那個顯示成文本框按鈕。
var inner = customButton.$table;
var btnWrapper = $("em", inner);
btnWrapper.html("<input data-role='none' type='text' class='fr-texteditor' style='width: 42px; height: 16px; text-align: center;'>");
//修正這個按鈕的屬性,讓它變成文本類型,居中,鼠標放上次圖標是編輯狀態(tài)。
var cellValue = contentPane.curLGP.getCellValue("D1");//獲取D1單元格的值就是page,也就是當前頁。
var $input = $("input", btnWrapper);
$input.val(cellValue);//給這個文本控件復(fù)制,用的是JQUERY的方法,可以COPY。
var total=contentPane.curLGP.getCellValue("C1");
if (total>parseInt(total)){total=parseInt(total)+1;
}
contentPane.toolbar.options.items[4].setText(total);
//把總頁數(shù)顯示在第5個控件上,因為這個數(shù)值可能是小數(shù),所以判斷下要不要加一處理。
contentPane.toolbar.options.items[3].setText(contentPane.curLGP.getCellValue("E1"));
//把斜線寫在第4個控件上。
7個自定義按鈕:
第一個首頁:
代碼如下:
window.location.href="${servletURL}?reportlet=fenye.cpt&op=write&page=1";//鏈接到fenye.cpt,page 參數(shù)=1,代表第一頁。
第二個上一頁:
代碼如下:
var page= $("tr[tridx=0]","div.content-container").children().eq(0).html(); //取第一行第一個單元格內(nèi)容。
if(page==0)
{
this.setEnable(false);
alert("頁面超出指定的范圍");
}
else
window.location.href="${servletURL}?reportlet=fenye.cpt&op=write&page="+page//如果沒有小于1就正常跳轉(zhuǎn),否則顯示頁面超過指定的范圍,這個控件設(shè)置不可以使用。
第三個可以跳轉(zhuǎn)的當前頁:
var toolbar = contentPane.toolbar;
var items = toolbar.options.items;
var customButton=items[2];
var inner = customButton.$table;
var btnWrapper = $("em", inner);
var $input = $("input", btnWrapper);
//取這個控件
$input.blur(function(){
var toolbar = contentPane.toolbar;
var items = toolbar.options.items;
var customButton=items[2];
var inner = customButton.$table;
var btnWrapper = $("em", inner);
var $input = $("input", btnWrapper);
var page=$input.val();
var total=$("tr[tridx=0]","div.content-container").children().eq(2).html();
if (total>parseInt(total)){total=parseInt(total)+1;
}
if(parseInt(page) > parseInt(total) || parseInt(page) < parseInt(1) )
{
alert("你輸出的頁數(shù)不再指定范圍內(nèi)");
}
else
window.location.href="${servletURL}?reportlet=fenye.cpt&op=write&page="+page
});
//失去焦點后輸入的值是不是在指定的范圍內(nèi),如果在跳轉(zhuǎn)到指定頁面,就在else后面的URL,否則輸出你的輸出頁面不對提示。失去焦點代表就是點擊其他地方或者點擊TAB鍵。
第四個斜線:
這個在加載時間里處理了。這邊不需要處理。
第五個總頁數(shù):
這個在加載時間里處理了。這邊不需要處理。
第六個下一頁:
var page= $("tr[tridx=0]","div.content-container").children().eq(1).html();
var total=$("tr[tridx=0]","div.content-container").children().eq(2).html();
//JQURUY取下一頁和總頁數(shù)
if (total>parseInt(total)){total=parseInt(total)+1;
}
//判斷總頁數(shù)是不是整數(shù),不是加一
if(parseInt(page) > parseInt(total))
{
this.setEnable(false);
alert("頁數(shù)超出指定范圍內(nèi)");
}
else
window.location.href="${servletURL}?reportlet=fenye.cpt&op=write&page="+page
//如果下一頁在這個范圍就跳轉(zhuǎn)到那里
這個控件不可用,輸出出錯。
第七個末頁:
代碼如下:
var total=$("tr[tridx=0]","div.content-container").children().eq(2).html();
//取總頁數(shù)。
if (total>parseInt(total)){total=parseInt(total)+1;
}
window.location.href="${servletURL}?reportlet=fenye.cpt&op=write&page="+total
//判斷總頁數(shù)是不是整數(shù),不是加一,并跳轉(zhuǎn)到最后一頁。
顯示控件的名稱需要在別名里添加下
網(wǎng)頁題目:FineReport層式報表解決大數(shù)據(jù)集展示問題攻略
文章出自:http://www.chinadenli.net/article6/gpciig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站改版、品牌網(wǎng)站制作、標簽優(yōu)化、網(wǎng)站設(shè)計、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)