1. 概述
1.1 問題描述
實現報表預覽時點擊列名,可對該列進行升降排序,而多列的列名是根據字段橫向擴展出來的,使用 擴展後排序 中的方法分别設置 order 參數的值無法實現橫向擴展列中的點擊列排序。
1.2 實現思路
獲取點擊列的所有值,然後在銷售員的單元格屬性中,設置擴展後排序,銷售員根據點擊列的所有值進行排序。
2. 示例
2.1 數據準備
新建數據集ds1,輸入數據庫查詢語句:SELECT * FROM 銷量
2.2 表格設計
如下圖設計表格樣式:
單元格屬性設置如下表所示
注:字段設置爲彙總時擴展屬性會自動變爲不擴展,可以通過單元格左上角的灰色箭頭查看單元格的擴展方向。
單元格 | 數據集 | 數據列 | 屬性 |
---|---|---|---|
A2 | ds1 | 銷售員 | 從上到下擴展,居中,其餘默認 |
B1 | ds1 | 産品 | 從左到右擴展,居中,其餘默認 |
B2 | ds1 | 銷量 | 不擴展,數據設置:彙總-求和,居中,其餘默認 |
2.3 超級鏈接
給 B1 單元格,添加超級鏈接>動态參數,重命名爲排序,并添加兩個參數order和index,order 的參數值爲公式:if($order == 1, 0, 1),index 的參數值爲公式:&B1,如下圖所示:
注:index 參數值爲 &B1,即點擊時設置 index 的值爲所點擊的單元格的序号。
2.4 排序方法
選中 A2 單元格,右邊屬性面板擊單元格屬性>擴展,設置擴展後排序爲升序并且公式爲:if($order == 1, EVAL("B2[;B1:" + $index + "]"), EVAL("-B2[;B1:" + $index + "]")) 。如下圖所示:
注:該公式的含義爲:order 爲 1 時,按照 EVAL("B2[;B1:" + $index + "]")獲取到的點擊列的值進行升序排列;order 爲 0 時,将獲取到的點擊列的值處理爲負數,然後按照負數進行升序排列。
2.4 預覽效果
保存模板,點擊分頁預覽,PC 端效果如下所示:
3. 模板下載
已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\橫向擴展列多列排序.cpt。
點擊下載模板:橫向擴展列多列排序.cpt