MVC + EFCore 項目實戰 – 數倉管理系統9 – 數據源管理完結篇

 

我們完成數據源管理的剩餘部分:點擊表名,預覽表中數據。

我們需要完成的是下圖的方框部分。

考慮到這塊以後可能復用,我們將她獨立出來,做成 view component.

 

新建 view component 框架

因為前面多次出現過 view component 的使用,分三步:建立類文件(WidgetTableViewComponent.cs)、建立視圖文件、調用。詳細步驟不再展開。

 

詳解

1、類文件WidgetTableViewComponent.cs

我們接收兩個參數,一個是連接字元串,一個是要查詢的表名。

核心功能就是要產生一個數據集的 json 字元串。

json格式的字元串比較容易在前後端傳遞、解析,推薦使用。

 

2、view component 渲染視圖

視圖的核心功能就是解析接收的json字元串,拼接成表格的html.

 

整體的結構如下:

 

下面重點看如何拼接。

先對數據做個預處理,表格歸根到底就是個二維表,為了更方便處理,我們將json字元串轉為二維數組,如下。

處理前的字元串類似這樣:

[{“DepartmentGroupKey”:1,”ParentDepartmentGroupKey”:null,”DepartmentGroupName”:”Corporate”},

{“DepartmentGroupKey”:2,”ParentDepartmentGroupKey”:1,”DepartmentGroupName”:”Executive General and Administration”},

{“DepartmentGroupKey”:3,”ParentDepartmentGroupKey”:1,”DepartmentGroupName”:”Inventory Management”}]

即 [{標題:數據,標題:數據。。。},。。。,{標題:數據,標題:數據。。。}] 這樣的格式。

處理後類似這樣:

[ [標題,標題],[數據,數據],[數據,數據]。。。[數據,數據] ]

 

這樣我們拼接html時只要把第一行遍歷作為標題,後面遍歷作為數據,不斷的append就可以了。

 

這樣我們的動態表格就構建好了,最後我們在DBPreview調用一下即可:

@await Component.InvokeAsync(“WidgetTable”, new { connStr = @connStr, tbName =“DimAccount” })

 

* 說明:tbName這個參數實際沒有用到(因為測試後發現不能將表名作為SqlParameter參數),直接改成了通過 Request.Query[“curTb”] 接收表名。

效果如圖,我們點擊表名傳入不同的表名參數,就可以獲取相應表的數據預覽。

 

總結

1、本次我們完成了數據源管理最核心的部分,表格數據的動態展現。

數據源管理的核心功能就全部完成了,相信你可以根據自己的需要擴展這個系統。

最後提供一點擴展思路拋磚引玉,僅供參考:

將表格組件抽象出來作為一個組件(事實上我命名時已經可以看出來),類似的可以擴充出各種各樣的圖形組件。

圖是根據表數據產生的,我們可以按照:

數據à抽象出數據源 à 組件展示(表顯示、圖顯示、KPI展示、地圖展示等) 分離出數據應用的三個層次。(可以參考tableau, 開發出一個微型的tableau出來。)

 

 

2、現在正在大力提倡國產化軟體,大家可以嘗試做一些產品化的東西,不要單純的做流程化的業務系統。

數據源管理這個模組到這裡就全部結束了,其他非核心的(右上區域功能:動態產生篩選條件)以及其它UI等大家可自行優化。

因為時間問題,我們整個的實戰項目就開發到這。後面兩個模組整個的開發過程類似,作為課後作業,大家可自行完成:)

 

歡迎在評論區留言打卡,happy coding :)

 

 

P.S. 相關文章

MVC + EFCore 項目實戰 – 數倉管理系統8 – 數據源管理下–數據源預覽

MVC + EFCore 項目實戰 – 數倉管理系統7 – 數據源管理中–新增數據源

MVC + EFCore 項目實戰 – 數倉管理系統6 – 數據源管理上–使用view component完成卡片列表

MVC + EFCore 項目實戰 – 數倉管理系統5 – 菜單配置及里程碑劃分

MVC + EFCore 項目實戰 – 數倉管理系統4 – 需求分解

MVC + EFCore 項目實戰 – 數倉管理系統3 – 完成整體樣式風格配置

MVC + EFCore 項目實戰 – 數倉管理系統2- 搭建基本框架配置EFCore

MVC + EFCore 項目實戰 – 數倉管理系統1

 

Tags: