Posted on 2015-08-28 10:23
FineReport——報表技術領跑者 閱讀(62)
評論(0) 編輯 收藏
我們經常要打印報表,也遇到打印上的麻煩,比如有時候我們不想嚴格按照報表上面的樣式,根據實際應用可能有別的樣式更適合,這時候怎么辦呢,其實報表軟件是可以設置,今天我就帶大家來了解一下!
1. 問題描述
對于填報網格式報表,每行前面有個復選框,希望實現點擊頁面中設置的打印按鈕希望將選中的復選框中的值按照一定的樣式打印,如分欄、頁面固定顯示幾行等格式。
2. 實現思路
可以定義另外一個有固定格式的模板,此模板的數據是根據填報網格式報表中選中的值進行過濾,而在填報網格式報表中則需要在按鈕的點擊事件中定義js,js首先要獲取選中行的數據,然后調用FineReport(實例中所用報表開發工具為FineReport)內置的打印方法,將選中的值以參數的方式加入到打印方法的URL中傳到被打印的模板中。
3. 示例
預覽模板效果如下所示
選中一些數據讓其按照以如下圖所示的樣式進行打印,下面我們來看下具體的實現步驟。
3.1 新建需要打印格式模板
· 定義數據集
由于此模板要根據選中的值進行打印,因此要在此模板中定義參數,在此我們將參數定義成數據集參數。
新建工作簿,增加數據集ds1,SQL語句為:SELECT * FROM 訂單 where 訂單ID in (${ID})。
· 表樣設計
將表樣設計成要打印的效果,在此我們將模板設置成如下樣式:
將B2單元格的左父格設置成無,并將其余單元格的左父格設置為B2。
將B3和D3設置形態。
同樣也可以對模板進行分欄。
· 保存模板
保存模板,具體的設置可參考模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\FormFAQ\PrintCol.cpt
3.2 修改預覽模板
· 打開模板
打開模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\LineForm\LineForm7.cpt。
· 修改模板
此模板,我們只要修改按鈕的名稱和按鈕的js即可,因此我們將按鈕名稱修改成“打印”,并將js修改成如下代碼:
var $span = $('.fr-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&ID="+darray); //調用打印方法,URL為之前做好的模板路徑
注:若獲取的vv值為字符串,要將其放入數組中則需要修改成darray.push("'"+vv+"'")。
· 保存模板
保存模板,具體的設置可參考模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\FormFAQ\PrintOtherStyle.cpt。
3.3效果查看
填報預覽PrintOtherStyle.cpt,選中幾行數據后,點擊打印按鈕,就會按照上圖的效果進行打印。