很多小伙伴反應說已經用羅叔的教程解決了很多 PowerBI 難題并在工作中制作了很多報告,導航也是一個難題,有什么方法可以快速建立導航和菜單系統嗎?
雖然羅叔此前已經分享過多次菜單系統的構建方式,但其中是包含了很多手工量的。今天,羅叔給出一種最新的構建方式,讓是一勞永逸。
該方法在理論上,可以支持:
- 多限層
- 只需要構建一次
- 全面可配置化
- 可修改化
- 支持垂直和水平方向
我們在看了效果后一起學習。
效果預覽
先來看垂直方向無限級菜單目錄
image
再來看水平方向無限級菜單目錄:
image
其場景如下:
- 用戶選擇目錄樹的某個位置
- 在右側預覽其效果,并確定自己要去那頁
- 點擊【GO】即可到達目標頁面
我當然知道這是你要的。因為,這也是我要的。
原理揭秘
這里的核心原理是:
根據用戶選擇的菜單內容,來動態計算出目標頁面地址并賦給【GO】按鈕即可。
如下:
image
可配置化
目錄結構如果需要改變,往往要改很多地方,而本文的方案是完美可配置的,我們用 DAX 公式來生成一張目錄表,如下:
Report.Content =
VAR vContentCore =
SELECTCOLUMNS(
{
( "首頁" , "首頁" , "" , 0 , 0 ),
( "經營概況" , "指標體系" , "http://files.excel120.com/images/20200524171453.png" , 1 , 1 ),
( "經營概況" , "月度同比分析" , "http://files.excel120.com/images/20200524171453.png" , 1 , 2 ),
( "經營概況" , "大區門店銷售額等級分布" , "http://files.excel120.com/images/20200524171453.png" , 1 , 3 ),
( "經營概況" , "區域月度銷售完成率" , "http://files.excel120.com/images/20200524171453.png" , 1 , 4 ),
( "經營概況" , "業態及屬性銷售占比" , "http://files.excel120.com/images/20200524171453.png" , 1 , 5 ),
( "區域分析" , "近期業績及賽馬圖比拼" , "http://files.excel120.com/images/20200524171555.png" , 2 , 1 ),
( "區域分析" , "移動平均趨勢分析" , "http://files.excel120.com/images/20200524171555.png" , 2 , 2 ),
( "區域分析" , "區域內門店排名分析" , "http://files.excel120.com/images/20200524171555.png" , 2 , 3 ),
( "區域分析" , "重點城市帕累托分析" , "http://files.excel120.com/images/20200524171555.png" , 2 , 4),
( "單店分析" , "單店業績同期對比分析" , "http://files.excel120.com/images/20200524171821.png" , 3 , 1 ),
( "單店分析" , "入庫與銷售額分析" , "http://files.excel120.com/images/20200524171821.png" , 3 , 2 ),
( "單店分析" , "單店完成率分析" , "http://files.excel120.com/images/20200524171821.png" , 3 , 3 ),
( "單店分析" , "客單價/連帶率分析" , "http://files.excel120.com/images/20200524171821.png" , 3 , 4 ),
( "尾頁" , "尾頁" , "" , 99 , 0 )
} , "L1Name" , [Value1] , "L2Name" , [Value2] , "Preview" , [Value3] , "L1Code" , [Value4] , "L2Code" , [Value5] )
RETURN
ADDCOLUMNS( vContentCore ,
"FullCode" , [L1Code] & "." & [L2Code] ,
"FullName" , [L1Name] & " \ " & [L2Name] ,
"OrderBy" , [L1Code] * 100 + [L2Code]
)
效果如下:
image
這樣,所有的內容就可以集中到一起來進行維護。這是我們對OCP原則的應用。
可預覽化
對于復雜的BI報告系統,用戶很可能并不知道自己要去哪里,那么當用戶選擇一個可能的目標頁面時,可以先不做跳轉,而是預覽,讓用戶知道確實要去那里,再點擊【GO】按鈕到達目標頁面。
image
我們將目標頁面的預覽圖URL存放,在用戶選擇導航菜單后,就可以看到預覽了,非常巧妙。
總結
本文給出了無限層級菜單的終極方案。該方案可以支持大型系統的構建。
趕快動手試試吧。