1. 概述
2. 操作步驟
2.1 範本準備
1)以 使用函式實現動態列 文檔中的範本為基礎,進行修改。
2)A1 儲存格輸入文字「序號」。如下圖所示:
3)選中第一行,滑鼠點選右鍵,選擇「設定重複標題行」,設定第一行為重複標題行。如下圖所示:
4)修改 ds1 的 SQL 語句為SELECT * FROM S訂單明細
2.2 B1 儲存格新增動態參數
選中 B1 儲存格,給 B1 儲存格新增一個動態參數類型的超級連結。
新增兩個參數 order 和 index,order 的參數值為公式:if($order = 1, -1, 1),index 的參數值為公式:&B1。如下圖所示:
注:index 參數值為 &B1,即點選時設定 index 的值為所點選的儲存格的序號。
2.3 設定擴展後排序
設定 A2 儲存格擴展後排序為「升冪」,排序公式為:if(isnull($index), A2, if($order = 1, EVAL("B2[;B1:" + $index + "]"), EVAL("-1*B2[;B1:" + $index + "]")))
該公式的含義為:
order 為 1 時,按照 EVAL("B2[;B1:" + $index + "]") 獲取到的點選列的值進行升冪排列;order 為 -1 時,將獲取到的點選列的值處理為負數,然後按照負數進行升冪排列。
公式說明如下表:
公式 | 說明 |
---|---|
isnull($index) | 判斷 $index 是否為空字串。$index 在初始化時為空,點選列標題後被指派為 &B1,即所點選的儲存格的序號 注:參數為空時,以 A2 儲存格排序,可提高第一次點選標題排序時的效能。 |
"B2[;B1:" + $index + "]" | 傳回 B1 儲存格擴展出來的第 $index 個值對應的 B2 儲存格值,詳情可參考:絕對層次座標 |
EVAL() | 傳回字串運算式 |
如下圖所示:
2.4 效果查看
2.4.1 PC 端
參考本文 1.1 節。
2.4.2 行動端
App 及 HTML5 端效果如下圖所示:
3. 範本下載
已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Parameter\DynamicCol\動態列實現多列排序.cpt
點選下載範本:動態列實現多列排序.cpt