本文主要介紹業務系統設計裡的選單設計,關注我部落格的朋友或許以前見過一篇我寫的關於選單的文章,文章連線:
使用radcontrols的radmenu控制項開發系統選單
,這篇文章主要是介紹了radcontrols的radmenu控制項的基本使用,沒有詳細介紹到選單如何設計,為什麼要那麼設計。本文就以這片文章為基礎,同樣通過此文章的示例程式和示例資料庫,結合業務系統設計的相關術語介紹業務系統的選單設計。
首先看看上面的資料庫設計結構,其中id為自動編號的主鍵字段,code為選單編碼(也稱業務編碼),name為選單名稱, url為單擊選單所導航的路徑,imageurl為選單上顯示的位址,shortcut為快捷鍵,order為選單項顯示順序,grade為選單級限,endgrade為是否為末級選單(既最後一選單項),supmenucode為當前選單項的父級選單編碼(對應於code欄位),完整的還應該包括是否受許可權控制等字段,這裡不一一列出。
上面的資料庫設計其實很簡單,需要主要的字段有code選單編碼(也稱業務編碼),在業務系統裡通常設計為每一選單項都可以認為是乙個業務操作,這裡的code非常重要,業務系統的後續工作都是從這裡開始,通常與許可權設計結合使用得最多。
系統選單應該是多層次結構的,比如常見的windows選單,業務系統裡的選單設計同樣如此,通過supmenucode欄位來標記該選單項屬於那一項選單的子選單,如果沒有父級選單(系統頂層選單)則標記為0。
既然選單有層次結構,那就一定有層次標識,通過grade來標記;endgrade則表示當前選單項在該層次級別上的選單項上是否為末級。
分析清楚了需求和選單設計方案,下面我們著手**開發,下圖為專案解決方案截圖:
首先需要配置資料庫連串,如下: 1
private
static
string
connectionstring ="
provider=microsoft.jet.oledb.4.0;data source="2
+@"");
接著我們需要乙個執行sql的方法,如下**塊: 1
private
datatable executequery(
string
cmdtext)211
}12}
最後我們還需要寫兩個方法,乙個是查詢頂層選單的方法,乙個則是實現查詢選單下的子選單方法(做法有很多種,我個人建議把所有的資料查詢出然後在操作記憶體資料,這裡為了方便理解我故採用多次查詢資料庫的方式來實現)。 1
public
datatable getmenu()26
7public
datatable getmenubysupcode(
string
supmenucode)8
ok,準備工作做好後,現在就是需要到ui層上去做選單的展現工作了。選單的展現我通過radcontrls的radmenu控制項來實現,此控制項相對asp.net的標準menu控制項功能強大。要使用radmenu則需要註冊控制項的引用,如果你是通過radcontrls控制項庫安裝包安裝的則會自動註冊到vs工具箱,和標準控制項使用方法一樣。 1
@ register assembly="
radmenu.net2
"namespace="
telerik.webcontrols
"tagprefix="
rad"
%>
1選單開始
--%>
2<
rad:radmenu id="
systemmenu
"runat="
server
"skin="
vista
">
3rad:radmenu
>
4選單結束
--%>
上面準備好了頂層選單的查詢方法,直接通過該方法查詢出頂層選單項對選單進行初始化: 1
protected
void
page_load(
object
sender, eventargs e)27
}89menu menu
=new
menu();
10private
void
initmenu()
1130}
我們設計為多層次選單結構,那麼在初始化頂層選單的時候就應該判斷該選單項是否有子選單,如果有則也初始化子選單,如果是多級層次的結構,通過遞迴演算法來完成多層次的初始化。如下**塊: 1
2private
void
initsubmenu(radmenuitem item,
string
supmenucode)324
}25}26
}
業務系統設計之一 系統選單設計
很久沒寫文章了,前幾天有幾個朋友問了我很多關於業務系統 erp,drp,crm等 設計裡很多概念性東西,花了很長時間給他解釋,最後他門還是知其然不知其所以然,這對於剛跨出學校大門的朋友來說,理解起確實有點枯燥。這裡我以以前參與的用友erp,drp產品專案裡的部分設計為參考,通過幾篇文章來和大家分享業...
業務系統設計之一 系統選單設計
很久沒寫文章了,前幾天有幾個朋友問了我很多關於業務系統 erp,drp,crm等 設計裡很多概念性東西,花了很長時間給他解釋,最後他門還是知其然不知其所以然,這對於剛跨出學校大門的朋友來說,理解起確實有點枯燥。這裡我以以前參與的用友erp,drp產品專案裡的部分設計為參考,通過幾篇文章來和大家分享業...
十一 系統設計
1.在短時間內構建乙個簡單可實現的演算法,執行資料並通過交叉檢驗來驗證資料 2.完成第一步後,便可以繪製學習曲線,通過曲線觀察演算法是否有高偏差或者高方差的問題,以此作為下一步決策的依據,是新增更多訓練集還是增減特徵等等 3.人工檢查交叉驗證集中 失敗的資料 誤差分析 來發覺演算法的缺陷去修復 類偏...