web報表開發FineReport:[15]引數面板?

我們的引數聯動在報表展示時,聯動效果是通過客戶自己的選擇來實現聯動的,但是在當聯動內容是一一對應的時候,客戶不希望還要再選一次才能實現聯動效果,希望在引數面板選擇一次引數之後,後面的資料自動展現出來,形如填報介面的自動匹配,這個該如何實現呢?同時還希望,後面聯動的資料前面的標籤在第一次開啟模板時,並不展現出來,這個又該如何實現呢?

工具/原料

web報表開發:FineReport

電腦

方法/步驟

實現思路

對照填報介面的自動匹配章節,在引數介面也用sql語句實現一一對應,當第一次開啟模板時,標籤不顯示可以通過js控制實現。

描述

實現選擇客戶名稱,客戶的相應資訊在引數面板上展示,查詢前,只顯示客戶名稱的下拉框控制元件,其他的不顯示,點選查詢後,報表展示該客戶的訂單資訊,如下圖:

web報表開發FineReport:[15]引數面板

新建模板

新建模板資料集即資料庫查詢,SQL語句為SELECT * FROM [訂單]。

定義模板引數id:模板>模板引數,新增一個模板引數id。

引數面板設計

引數對應的控制元件設定

新增引數id生成的控制元件,控制元件型別為下拉框控制元件,id標籤改名為:客戶名稱。下拉框控制元件的資料字典設定如下:

聯動控制元件的設定

此處,將客戶詳細資訊顯示在引數面板上,以標籤控制元件來展示。

增加2個新的標籤,其中一個固定標籤的控制元件名設定name,控制元件值為聯絡人姓名,另外一個動態標籤的控制元件值為公式:sql("FRDemo", "select 聯絡人姓名 from 客戶 where 客戶ID='" + $id +"'", 1, 1),如下:

同理,設定好聯絡人職務,地址和電話號碼等標籤的設定,完成之後,引數面板如下:

標籤不可見設定

由於要實現在開啟模板時,只顯示下拉框,其餘的標籤不顯示,那麼就需要將所有固定標籤設定為不可見,即屬性>基本屬性>可見,將勾去掉即可;同時,在編輯下拉框之後,引數面板上的標籤又需要顯示出來,則可以在下拉框控制元件處新增一個編輯後事件,程式碼如下:

var a=this.options.form.getWidgetByName("name");

a.setVisible(true);

注:程式碼中的name是固定標籤的控制元件名,由於要控制多個固定標籤,則需要重複寫多個這段程式碼,只是控制元件名需要一一對應,設定好的引數面板如下:

web報表開發FineReport:[15]引數面板

web報表開發FineReport:[15]引數面板

web報表開發FineReport:[15]引數面板

web報表開發FineReport:[15]引數面板

報表主體設計

如下圖:

在A2單元格處設定模板引數的過濾。

web報表開發FineReport:[15]引數面板

保存於預覽

將該模板儲存之後,點選分頁預覽就會看到如上的效果。線上檢視模板效果請點選ParaConnection2.cp

已完成的模板,可參照:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameter\ParaConnection2.cpt。

面板, 引數, 模板, 標籤, 報表,
相關問題答案