自定義FineReport網格式填報表列印樣式

文 | 軟妹 2019-06-11 10:42:55

對於填報網格式報表,每行前面有個複選框,希望實現點擊頁面中設置的列印按鈕希望將選中的複選框中的值按照一定的樣式實現報表列印,如分欄、頁面固定顯示幾行等格式。

可以定義另外一個有固定格式的報表模板,此模板的數據是根據填報網格式報表中選中的值進行過濾,而在填報網格式報表中則需要在按鈕的點擊事件中定義js,js首先要獲取選中行的數據,然後調用java報表軟體FineReport內置的列印方法,將選中的值以參數的方式加入到列印方法的URL中傳到被列印的模板中。

預覽模板效果如下所示

報表模板效果預覽

選中一些數據讓其按照以如下圖所示的樣式進行報表列印,下面我們來看下具體的實現步驟。
報表列印效果
1. 新建需要列印格式模板
1.1 定義報表參數
由於此模板要根據選中的值進行列印,因此要在此模板中定義參數,在此我們將參數定義成數據集參數。
1.2 定義報表數據集
新建工作簿,增加數據集ds1,SQL語句為:
SELECT * FROM 訂單 where 訂單ID in (${productID})
1.3 報表表樣設計
將表樣設計成要列印的效果,在此我們將模板設置成如下樣式:
報表表樣設計
將B2單元格的左父格設置成無,並將其餘單元格的左父格設置為B2。
將B3和D3設置形態。
同樣也可以對模板進行分欄。
1.4 保存報表模板
保存模板,具體的設置可參考模板:
%FR_HOME%WebReportWEB-INFreportletsdocFormFormFAQPrintCol.cpt
2. 修改預覽報表模板
2.1 打開報表模板
打開模板:
%FR_HOME%WebReportWEB-INFreportletsdocTutorialFormLineFormLineForm9.cpt
2.2 修改報表模板
此模板,我們只要修改按鈕的名稱和按鈕的js即可,因此我們將按鈕名稱修改成「列印」,並將js修改成如下代碼:

var $span = $(".x-checkbox-checkon");  //獲取選中的複選框   
var darray = [];   
var $tds = $("td").has($span); //獲得選中複選框的單元格   
for (var i = 0, len = $tds.length; i < len; i ++) {    //遍歷選中的單元格   
   var id = $($tds[i]).attr("id");  //給選中的單元格增加id屬性   
var idn = id.replace("A","B"); //將複選框所在的A列換成客戶編號所在的B列   
var vv=document.getElementById(idn).innerHTML;    //獲取選中單元格所在B列的數據   
  darray.push(vv);     
}   
FR.doURLPDFPrint("${sevletURL}ReportServer?reportlet=/doc/Form/FormFAQ
/PrintCol.cpt&productID="+darray);  //調用列印方法,URL為之前做好的模板路徑

註:若獲取的vv值為字元串,要將其放入數組中則需要修改成darray.push("'"+vv+"'")
2.3 保存模板
保存模板,具體的設置可參考模板:
%FR_HOME%WebReportWEB-INFreportletsdocFormFormFAQPrintOtherStyle.cpt
3. 效果查看
填報預覽PrintOtherStyle.cpt,選中幾行數據後,點擊列印按鈕,就會按照上圖的效果進行列印。

Facebook Comments

喜歡這篇文章嗎?歡迎分享按讚,給予我們支持和鼓勵!

臉書【FineReport報表軟體】

帆軟FineReport臉書官方賬號

送資訊人才必備懶人包

商務問題諮詢

王人賢 Brian

0933-790886

brian.wang@fanruan.com

  • 郵件技術諮詢

  • support@fanruan.com

    帆軟logo

    版權所有©2019 帆軟軟體有限公司|蘇ICP備14031611號-3

返回頂部