ASP.NET Web開發(fā)框架之一 功能導航
功能導航主要解決如何布局功能,把功能如何合理的布置到頁面中。現(xiàn)在流行的一種方案是左右結構的導航,左邊樹狀的菜單,右邊顯示明細功能。實現(xiàn)出來的效果圖如下所示
同版本的C/S程序的界面,也是以同樣的效果出現(xiàn)
Web左邊點擊樹節(jié)點,右邊打開相應的功能列表,顯示該節(jié)點下面有哪些功能。而這些功能節(jié)點,均是用菜單設計器設計實現(xiàn),以方便客戶定制主界面。菜單設計器的設計樣式如下
關于如何實現(xiàn)樹節(jié)點的母子關系,有很多辦法。一種辦法是給樹的每個節(jié)點加一個ParentId,用于指示它的上一級節(jié)點,這樣每設計一個節(jié)點,均需要指出它的父節(jié)點,以用于呈現(xiàn)母子關系。另一種方法,以本例子中實現(xiàn)為例子,1002為Sales的樹節(jié)點,它的子節(jié)點全部用1002XX來標識,如上圖中所示,100201表示日記帳,100202表示報表,100203表示查詢。前一種方法,請參考框架數(shù)據(jù)庫中的表X_Menu,后一種請參考表UserGroupMenu。
導航的另一個目的,要實現(xiàn)中英文自動切換,以方便不同的用戶習慣偏好。Enterprise Solution系列的組件,均內置了中英文切換的功能,可以在Settings中,選擇習慣的語言進行設置。對于Web應用程序,用戶的語言偏好保存在瀏覽器的Cookie中,對于C/S程序,用戶的語言偏好保存在注冊表中。
再來看看,如何快速的找到需要的功能,并打開執(zhí)行它。如果您習慣在左邊的菜單中查找,則可以直接在菜單對應的右邊的功能列表區(qū)域中,打開該功能。另一種方法是,在快速啟動欄中輸入功能編碼,點擊Go按鈕,此時,它會在新的選項中頁面中,打開此功能。一般來說,系統(tǒng)預置了三種類型的功能。
頁面功能;報表;自定義查詢
如何讓一個ASP.NET頁面成為功能點,并自動被系統(tǒng)框架找到呢? 請參考下面的例子代碼
- [Function("AIITRL", "~/module/note.aspx")]
- public partial class note : EntryPageBase
- {
- protected override void PageLoadEvent(object sender, EventArgs e)
- {
- if (!IsPostBack)
- TransactionType = "BlotterEntity";
- base.PageLoadEvent(sender, e);
- }
- }
給頁面加Function特性,***個參數(shù)是功能編碼,第二個參數(shù)是頁面的絕對地址。當在快速啟動欄中輸入AIITRL時,框架會找到(反射)此頁面,并在新的選項卡頁面中打開加載此功能。
這里要提到一點不足,對于ASP.NET,它是被瀏覽器請求執(zhí)行。不同于C/S,可以new一個窗體,然后Show。我一直在尋找一種方法,可以通過頁面的類型,來找到這個頁面所在的aspx文件地址,這樣可以省略Function特性的第二個參數(shù),到目前一直沒有找到可行的方案。第二個參數(shù)可以通過菜單設計器來輔助完成,不過原理和這里的差不多,也是人工識別,所以,我直接把地址放在特性參數(shù)中,以用于導航。
第二類功能是報表。先在報表設計器中設計此報表,給予一個編號,參考如下圖所示
在報表設計窗體中,給予基本的參數(shù)。然后在Web項目的report目錄中,放置報表文件。理論上,需要支持三大流行的報表系統(tǒng)。RDLC,微軟客戶端報表,簡單,易用,Crystal Report 水晶報表,功能復雜強大,Reporting Services 微軟服務器端報表。Enterprise Solution Web部分,目前只實現(xiàn)了RDLC客戶端報表,其它二項報表的功能,還有待研究和實現(xiàn)。這里要提到一點,加入一種類型的報表,要實現(xiàn)如下的基本功能:
1 多語言 基本的中,英,繁體
2 多種版本。Crystal Report 有多種版本,要能識別各個版本的報表文件并加載合適的呈現(xiàn)器(Render)
3 界面輸入與傳值。有的報表需要傳遞參數(shù),系統(tǒng)要創(chuàng)造界面輸入值,并自動的傳入到報表中
第三類功能是自定義查詢。用戶在查詢設計器中設計的查詢,Web框架要能解析成界面,呈現(xiàn)給用戶。
在此設計的查詢,通過在快速啟動欄中輸入PUPRSQ功能編碼,呈現(xiàn)給用戶如下效果的界面
查詢的結果,可以導出為EXCEL。關于如何將query轉換為Web界面,在后續(xù)的文章中會講解原理,在此先略過。
導航功能的好壞,對系統(tǒng)的可用性,有一定的影響。試想一下,功能很復雜的一個系統(tǒng),用戶要找一個功能,要找很久都找不到,或是沒有快捷的途徑找到它,用戶肯定不會認為它好用。其次,快速啟動欄的設計,用一個功能編碼標識用戶需要的一個功能模塊,有利于用戶快速執(zhí)行所需要的功能。高級的用戶不想去樹節(jié)點中找,則可以此方法執(zhí)行功能。
***,導航菜單是可編輯的,提供一個菜單編輯器,隨心所欲的設計用戶所需要的效果。
原文鏈接:http://www.cnblogs.com/JamesLi2015/archive/2012/09/18/2690025.html
【編輯推薦】