一、概述
【擴展後排序】在製作報表過程中可以實現多種排序需求,是最靈活的排序方式。
但由於在擴展完成後進行排序,會對所有儲存格的位置進行調整,因此效能最差。所以建議在進階排序無法實現的情況下,再使用【擴展後排序】。
【擴展後排序】在【儲存格屬性】→【擴展】→【進階】中設定,設定在需要排序的左父格上,一般設定在【最父格】(例如 C1 儲存格的左父格是 B1,B1 儲存格的左父格是 A1,那麼 A1 即為【最父格】,父子格邏輯詳細説明見:父子格設置)。
二、範例
下面我們以【擴展後排序】來實現按【銷量】欄位的升冪(從小到大)和降冪(從大到小)作為簡單的範例講解。
1
數據準備。
新建普通報表,新建資料庫查詢 ds1,SQL 語句為:SELECT * FROM 銷量。
資料庫查詢相關介紹詳見:資料庫查詢。
②設計報表。
將資料集中欄位依次拖入 A2:F2 儲存格中,A1:F1 儲存格輸入對應標題,設定表格樣式如下圖所示。
將 A2 儲存格的【資料設定】修改為【列表】,如下圖所示。
③添加【動態參數】。
給 E1 儲存格新增【超連結】→【動態參數】,新增兩個動態參數,分別重新命名為【升冪】和【降冪】,參數設定如下表。以【升冪】為例,步驟如下圖所示。
動態參數 | 參數名 | 參數值類型 | 參數值 |
升冪 | order | 字串 | asc |
降冪 | order | 字串 | desc |
④設置【範本參數】。
以【升冪】為例,步驟如下圖所示。
⑤設置【擴展後排序】。
選中【最父格】A2 儲存格,選擇右側屬性面板【儲存格屬性】→【擴展】→【進階】,選擇【擴展後排序】為【升冪】,進入公式定義介面,輸入公式:if($order='asc',E2,E2*-1),公式表示:若 order 為 asc 即升冪,則按照 E2 進行升冪排列,否則按照 E2 降冪排列。
本例只有在【最父格】儲存格設定排序才生效。
公式中的 E2 儲存格的數值型別必須是【數字型】,【日期時間型】等別的資料需要特殊設定,詳情可參見檔案:多欄位動態排序。
⑥效果預覽。
儲存報表,點選【分頁預覽】,效果如下圖所示。
該效果支援 App 端和 HTML5 端預覽。
三、範本下載
已完成範本設定可參考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\OrderReport\擴充後排序.cpt。
點擊下載範本。