天天看點

Winform開發架構之權限管理系統改進的經驗總結(2)-使用者選擇界面的設計

使用者選擇在很多地方需要用到,本篇以組織機構裡面的使用者選擇為例,介紹使用者選擇的界面效果。我們知道,使用者一般可以按組織機構進行分類,也可以按照角色進行分類,是以我們需要結合兩者進行快速展示使用者的層次關系,界面效果如下所示。

Winform開發架構之權限管理系統改進的經驗總結(2)-使用者選擇界面的設計

在上面的界面分為三個部分:左邊主要是機構和角色的展示;右邊則是通過清單控件進行展示,并可以進行勾選的操作;底部則是已選使用者的清單展示(可以移除)。

組織機構本身設計就是一個有層次關系的樹,是以它可以通過遞歸函數進行展現,展示方式可以使用傳統樣式的TreeView控件或者DevExpress樣式的TreeList控件,不過我傾向于使用TreeView,覺得這個線狀的層次關系更美觀一些,遞歸展示結構樹的代碼如下所示。

角色樹不是一個遞歸的關系,是以隻需要按清單展示即可,展示代碼如下所示。

角色清單大概效果如下所示。

Winform開發架構之權限管理系統改進的經驗總結(2)-使用者選擇界面的設計

右邊其實可以通過一般的GridView進行展示,但為了更好的封裝和使用,我使用我的Winform分頁控件中的WinGridview對象進行展示,這樣使用起來更簡便。

綁定資料是通過左邊的樹進行條件檢索的,是以可以通過擷取組織機構或者角色的節點資料進行查詢,我們通過判斷組織機構樹節點或者角色樹節點是否選中來判斷即可,具體清單綁定的代碼如下所示。

單使用者勾選清單的複選框的時候,該行的資料會被選中,我們最後要擷取使用者的勾選記錄(通過WinGridview控件的GetCheckedRows方法擷取),然後擷取對應的資料,添加到關聯關系的資料庫即可,具體代碼如下所示。

在一些場景中,我們可能需要在多個組織機構和角色中選擇不同的使用者,為了更友善展示我們選中的記錄,我設計了一個使用者控件(一個删除按鈕(Button)+标簽控件(Lable))組合即可,如下所示。

Winform開發架構之權限管理系統改進的經驗總結(2)-使用者選擇界面的設計

由于我們選擇的内容,無非就是選擇它的人員名稱即可,如果需要,單擊删除按鈕,讓使用者剔除不需要的人員,是以控件增加一個OnDeleteItem事件用來處理這個删除操作。

我們展示多個使用者資訊的時候,就是通過構造多個這樣的控件,并動态增加到Panel裡面即可,實作代碼如下所示。

在開篇說了,使用者選擇在很多場合會用到,如組織機構的使用者選擇,角色裡面的使用者選擇,或者流程裡面的使用者選擇等用途。

下面是組織機構裡面的主體界面。

Winform開發架構之權限管理系統改進的經驗總結(2)-使用者選擇界面的設計

在右上角的包含使用者區域,單擊添加按鈕,就會出現前面說到的使用者選擇對話框,如下所示。

Winform開發架構之權限管理系統改進的經驗總結(2)-使用者選擇界面的設計