反饋已提交
網絡繁忙
事物之間存在分支層次關係時,一般可用摺疊或縮排形式的組織樹展現。
在資料表結構中,這種分支層次關係一般透過類似 ID 與 parentID 兩個欄位表示,下圖為表結構關係及其實現的組織樹效果,組織的每個物件都由第一欄唯一表示,每個物件之間的關係(上層物件)都是由第二列表示(值為第一欄中中存在的值)。如下圖所示:
注:組織樹僅支援凍結第一個層級,摺疊樹不支援凍結。
建立普通報表,新增資料集 ds1,SQL 語句為:SELECT * FROM 公司部門,如下圖所示:
透過分析資料集中的資料可以看出,該組織結構包含 3 層,因此我們需要將這三層分別取出來。由於「部門 ID」列可以唯一表示一個部門,並且部門之間的層次關係也是透過「部門 ID」列的值表示的,所以設計表格如下:
1)範本有三個儲存格組織,每個儲存格擴展代表一個層次;
2)儲存格均拖入資料集中的「部門 ID」列,再設定不同的過濾條件。
最終表格效果如下:
儲存格 A1 代表第一層部門,比如“總部”。但預設擴展出所有部門 ID,需要透過過濾條件篩選出第一層部門。
由資料可以看出,第一層「上級 ID」 為空,因此雙擊 A1 儲存格,選擇「過濾」,新增條件:“上級 ID” 等於 'NULL',如下圖所示:
儲存格 A2 代表第二層部門,比如“人力資源部”、“市場部”等。
1)選擇 A2 儲存格,選擇「儲存格屬性>擴展」,設定 A2 的左父格為 A1,上父格為預設,縱向擴展,使得該級部門 ID 能夠跟隨上級部門 ID 自動擴展,如下圖所示:
2)雙擊 A2 儲存格,點選過濾,新增條件:“上級 ID”等於'A1',取消勾選「將父格子作為過濾條件」,由於設定了父格,A1、A2 中資料列又來自於同一資料集,此時子格預設會將父格作為過濾條件,即會篩選出 部門 ID =父格 ID 的資料,導致沒有符合條件的資料。因此需要在 A2 儲存格過濾時,取消勾選。如下圖所示:
第三層的原理與第二層相同,具體設定如下:
1)選擇 A3 儲存格,選擇「儲存格屬性>擴展」,設定 A3 的左父格為 A2,上父格為預設,縱向擴展,如下圖所示:
2)雙擊 A3 儲存格,點選過濾,新增條件“上級 ID”等於'A2' and “上級 ID”不等於' NULL ',取消勾選「將父格子作為過濾條件」,如下圖所示:
注:樹節點展開時,有多個根節點且根節點下沒有子節點,會有一層置空,需要在過濾條件中加上類似 parentID 不等於 NULL 的條件。
注:若資料中組織層數不止三層,可以按照相同的方法新增。
1)範本中使用的是部門 ID,要顯示為相應的部門名稱,分別選擇 A1、A2、A3 儲存格,選擇「儲存格屬性>形態>資料字典」,類型設定為「資料查詢」,資料集為「ds1」,實際值和顯示值分別為「部門ID」和「部門名稱」,如下圖所示:
2)若某一層中有些有子層,有些沒有子層,此時由於擴展會出現一些空白行,可以將空白行設定條件屬性進行隱藏,詳情可參見:隱藏列欄。
儲存報表,點選「分頁預覽」,效果如下圖所示:
App 與 HTML5 端效果相同,如下圖所示:
已完成範本可參見:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\GroupReport\組織樹報表.cpt
點選下載範本:組織樹報表.cpt
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙