MVC + EFCore 專案實戰 - 數倉管理系統9 - 資料來源管理完結篇

MiroYuan發表於2020-08-04

 

我們完成資料來源管理的剩餘部分:點選表名,預覽表中資料。

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

考慮到這塊以後可能複用,我們將她獨立出來,做成 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

 

相關文章