历史版本25 :扩展后排序 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

一、概述

  1. 【擴展後排序】在製作報表過程中可以實現多種排序需求,是最靈活的排序方式

  2. 但由於在擴展完成後進行排序,會對所有儲存格的位置進行調整,因此效能最差。所以建議在進階排序無法實現的情況下再使用【擴展後排序】。

  3. 【擴展後排序】在【儲存格屬性】→【擴展】→【進階】中設定,設定在需要排序的左父格上,一般設定在【最父格】例如 C1 儲存格的左父格是 B1,B1 儲存格的左父格是 A1,那麼 A1 即為【最父格】,父子格邏輯詳細説明見:父子格設置

二、範例

下面我們以【擴展後排序】來實現按【銷量】欄位的升冪(從小到大)和降冪(從大到小)作為簡單的範例講解。

1


數據準備。

  1. 新建普通報表,新建資料庫查詢 ds1,SQL 語句為:SELECT * FROM 銷量

  2. 資料庫查詢相關介紹詳見:資料庫查詢

 

②設計報表。

  1. 將資料集中欄位依次拖入 A2:F2 儲存格中,A1:F1 儲存格輸入對應標題,設定表格樣式如下圖所示。

  2. 將 A2 儲存格的【資料設定】修改為【列表】,如下圖所示。

③添加【動態參數】。

給 E1 儲存格新增【超連結】→【動態參數】,新增兩個動態參數,分別重新命名為【升冪】和【降冪】,參數設定如下表。以【升冪】為例,步驟如下圖所示。

動態參數

參數名

參數值類型

參數值

order

字串

asc

order

字串

desc

④設置【範本參數】。

以【升冪】為例,步驟如下圖所示。

⑤設置【擴展後排序】。

  1. 選中【最父格】A2 儲存格,選擇右側屬性面板【儲存格屬性】→【擴展】→【進階】,選擇【擴展後排序】為【升冪】,進入公式定義介面,輸入公式:if($order='asc',E2,E2*-1),公式表示:若 order 為 asc 即升冪,則按照 E2 進行升冪排列,否則按照 E2 降冪排列。

  2. 本例只有在【最父格】儲存格設定排序才生效。

  3. 公式中的 E2 儲存格的數值型別必須是【數字型】,【日期時間型】等別的資料需要特殊設定,詳情可參見檔案:多欄位動態排序

⑥效果預覽。

  1. 儲存報表,點選【分頁預覽】,效果如下圖所示。

  2. 該效果支援 App 端和 HTML5 端預覽。

 

三、範本下載

  1. 已完成範本設定可參考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\SpecialSubject\OrderReport\擴充後排序.cpt。

  2. 點擊下載範本。

擴充後排序.cpt