摘要:ASP.NET2.0 多層架構的資料溝通介面Object DataSouce
當我們設計多層式的Web應用系統時,資料的存取不在是直接透過sqlDataSouce來處理,而是透過中間層(商業邏輯層)的Web Service或者是Com+元件來處理
以往要寫這樣的方式,必須撰寫許多的程式,才能夠實現這樣的架構,而新的ASP.NET 2增加了一個新的Web Control→Object DataSource,可以讓我們寫粉簡短的程式,就能夠做到類似sqlDataSouce的功能,將新增、修改、刪除、查詢包成物件中的方法
建立物件Object
首先,必須將透過中間層的元件的新增修改刪除查詢的動作,包裝成為ASP.NET的物件,這樣Object DataSource才能夠使用物件的方式來達到目的方式步驟如下
- 新增一個Class.vb的項目:新增一個與您資料庫溝通的物件,假設名稱為MenuIfno.vb
- 為這個物件建立查詢、新增、修改、刪除的Function,Function的內容就是呼叫您所撰寫的中間層元件(COM+,WebService),其中查詢的Function必須傳回DataSet或者DataReader,不過由於DataReader必須在讀取的過程中將Connection持續的連接,再此建議大家回傳DataSet
- 假設我已經撰寫好的查詢、修改Function如下
- GetMenuAll():傳回所有資料表
- GetMenu(NodeId):傳回某一筆資料,NodeId為Key值
- UpdateMenu(NodeId,ParentId,sText,sValue,.....)更新資料
Object DataSource設定
接著就是Object DataSouce的設定方式與步驟如下:
- 從控制項中拉除一個sqlDataSource1,透過Smart Tag中的Configure Data Source設定sqlDataSource
- 在Choose your business object中,就可以下拉看到您剛剛所建立的物件【MenuInfo】→Next
- 接著,可以看到有四個頁箋(SELECT,UPDATE,INSERT,DELETE),可以根據需求,進入各頁箋,選擇所要的Function
- 例如目前要的是一個顯示全部資料的動作,所以就選擇了SELECT對應到GetAllMenu
- 按下Finish就完成了設定
資料瀏覽GridView
接著就建立一個GridView,並且把DataSource設定為剛剛所建立的object DataSource1,接著直接執行就可以將資料表中的資料顯示出來。
Detail View單筆資料修改刪除
- 接著我們希望能夠設計一個Detail View將剛剛的Grid View點選的資料顯示在Detail View中作單筆的修改、刪除動作。所以我們將剛剛建立的GridView透過Smart Tag設定Enabled Select Mode。
- 接著建立第二個ObjectDataSource2給Detail View,設定頁箋如下:
- SELECT:GetMenu(NodeId)
- UPDATE:UpdateMenu(NodeId,ParentId,sText,....)
- DELETE:DelMenu(NodeId)
- 接著由於SELECT的時候有個參數NodeId,需要設定該參數的來源:
- 在Paramenter Source設定為Conrtrol
- ControlID下拉可以選擇剛剛建立的GridView
- 接著按下Finish建立好該ObjectDataSouce2
- 點選Object DataSource2設定他的屬性【UpdateParameters】:
- 點選...進入設定的畫面中
- 選擇NodeId
- 設定Parameter Source為Control
- 設定ControlID為GridView1
- 再來拉出Detail View控制項,將該控制項的DataSource設定為Object DataSource2
- 點選DataView並且設定屬性視窗中找到【DataKeyNames】設定主索引為【NodeId】
接著來看看這樣設定的結果,點選某筆資料,就可以在DetailView中顯示該筆資料的內容,並且可以點選編輯,來修改該筆的資料,可以讓我們在撰寫最少的程式下,輕鬆的完成多筆查詢、單筆維護的畫面設計。
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |