當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

動态參數實現多級下拉折疊菜單

1. 概述

1.1 應用場景

在報表開發中,我們會遇到報表需要對行标題實現展開收起的折疊菜單的效果。這種效果一般在分析預覽或者填報中應用下拉樹控件來實現,但是在分頁預覽或者決策報表如何實現呢?這裏我們使用動态參數的方式。

預期效果:

1)在分頁預覽和決策報表中能适用

2)随着數據增長改變,折疊菜單自動改變(可複用),不用寫死

3)下拉收起功能和當前常用的下拉樹按鈕功能一緻

1576662471212046.gif

1.2 實現思路

1)通過父格擴展來實現全部菜單展開的效果

2)通過動态參數來标記哪些行是展開或者折疊的

3)通過條件屬性控制行隐藏顯示

2. 示例

2.1 準備數據

新建一個内置數據集,如下圖所示:

1576658895177342.png

2.2 設計表格

1)設計表格,如下圖所示:

1605509920470181.png

2)設置各單元格的擴展方向和左父格,如下表所示:

單元格擴展方向左父格
A3不擴展C2
B2

縱向擴展

C2
C2縱向擴展默認
C3縱向擴展C2
D3縱向擴展默認

2.3 添加動态參數

在 B2 單元格添加兩個動态參數類型的超級鏈接,步驟如下圖所示:

Snag_13cc6ff5.png

pre:if(find(C2, concatenate($pre, $cur)) > 0, replace(concatenate($pre, $cur), C2, ""), concatenate($pre, $cur))

以上 pre 參數函數内容是爲了獲取上次點擊的獲取的值。(但是如果上次已經點擊過一次,則去除點擊過的狀态)

cur:if(find(C2, concatenate($pre, $cur)) > 0, 1, if(C2 = $cur, 1, C2))

以上 cur 參數函數内容是爲了獲取本次點擊的獲取的值。

2.4 添加條件屬性

在 A3 單元格添加兩個條件屬性,步驟如下圖所示:

1605577998190433.png

條件屬性 1:行高爲 0:公式爲 reverse(or($$$ = $cur, find($$$, $pre) > 0)) 此公式是爲了判斷當前值如果不是本次或者上次點擊的則隐藏起來。

條件屬性 2:列寬爲 0。

2.5 添加箭頭圖标

找兩個小圖标:

1576660223355050.png  

1576660223811020.png

給 B2 單元格添加兩個條件屬性:

條件屬性 1:背景選擇向下的圖片,公式爲:reverse(or(C2 = $cur, find(C2, $pre) > 0))

展開收起.png

條件屬性2:背景爲向上的圖片,公式爲:or(C2 = $cur, find(C2, $pre) > 0)

2.6 效果預覽

1)PC端

保存報表,點擊「分頁預覽」,效果如下圖所示:

1576662471212046.gif

2)移動端

保存報表,點擊「移動端預覽」,同時支持 APP 端和 H5 端,效果如下圖所示:

1605579317753480.gif

3. 模板下載

已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\DynamicCol\動态參數實現二級下拉折疊菜單.cpt

點擊下載模板:動态參數實現二級下拉折疊菜單.cpt

另外附上三級下拉模板,原理同二級下拉一樣,只是父格擴展可能稍微比剛剛的複雜一些。

已完成模板可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\DynamicCol\動态參數實現三級下拉折疊菜單.cpt

點擊下載模板:動态參數實現三級下拉折疊菜單.cpt

4. 注意事項

1)以上爲内置數據集的方式實現的,如果是使用 Oracle 數據集,可以用select distinct 大類别,小類别 from 表名 ,然後左聯接同一個表,獲取裏面需要的值數據,然後放置到需要的位置,可能需要配置下過濾等,整體的表就可以做出來了。

2)如果需要點擊下拉折疊不是在小三角按鈕上實現,在文字上直接實現,也是可以的,只要更改公式中的 C2 爲當前值 $$$,然後再将本文 B2 動态參數設置在 C2 上即可。

3)其他樣式問題,比如左對齊,框線,字體,自行設置即可。

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

8s后關閉

反饋已提交

網絡繁忙