1. 程式人生 > >帆軟擴充套件後排序(超鏈排序)

帆軟擴充套件後排序(超鏈排序)

1. 問題描述

若模板中希望按照某列進行排序,而此列是無法用資料集函式還原的即無法使用高階排序進行排序設定,為此FineReport提供了擴充套件後排序,滿足一切排序的需求。

2. 實現方法

2.1 設定方法

右擊單元格>擴充套件屬性或者選中單元格,在右側下方的單元格屬性表-擴充套件屬性中對擴充套件後排序進行設定,如在A1單元格(這裡要注意是在父格上設定)中設定擴充套件後排序>升序,公式中輸入B1,則A1單元格(父格)會根據B1單元格(子格)的計算結果進行排序,如下圖:

222

2.2 產生的問題

由於是對擴充套件後的資料進行重新排序,只是根據結果改變行的順序,因此若模板中有通過seq()或者&單元格設定序號時,原本生成的序號會在重新排序時打亂。

2.3 解決方案

在序號所在的單元格設定條件屬性,條件屬性>新值,在新增的新值處選擇公式,輸入公式row(),這樣在重新排序時會根據當前所在行重新生成序號。

3. 示例編輯

下面我們以擴充套件後排序來實現多資料集關聯排序。效果如下:

預設專案名稱根據年度投資計劃總額升序排列222

選擇降序排列後,專案名稱根據年度投資計劃總額降序排列222

3.1 開啟模板

開啟模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\advanced\Multidatasource\Multi_2.cpt

3.2 超級連結設定

給年度投資計劃(D2單元格),新增超級連結>動態引數,新增2個動態引數為“升序”與“降序”,order就為引數名,其引數值,分別為asc(升序),desc(降序)。如下圖所示:

222

3.3 排序方法設定

右擊專案名稱所在列(B4單元格),右擊單元格>擴充套件屬性,在右側下方的單元格屬性面板中設定擴充套件後排序為升序並且公式為:if($order == 'asc',D4,0-D4)。如下圖所示:222

注:這個公式的意義在於:若order為asc即升序則按照D4進行升序排列,若選擇desc即降序則按照-D4升序。

3.4 條件屬性設定

原模板中使用了&來產生序號,會發現重新排序後順序被打亂了,需要使用條件屬性重新生成序號。在序號(A4單元格)中增加新值條件屬性,選擇公式,在公式中輸入:row()-3。如下圖所示:222

3.5 總結

以上便設定好了,預覽即可看到上圖效果。可以看出,在資料列的高階處進行排序需要進行很複雜的公式進行還原,而用擴充套件後排序只需要引用對應的單元格即可。