ASP.NET2.0 多層架構的資料溝通介面Object DataSouce

摘要:ASP.NET2.0 多層架構的資料溝通介面Object DataSouce

當我們設計多層式的Web應用系統時,資料的存取不在是直接透過sqlDataSouce來處理,而是透過中間層(商業邏輯層)的Web Service或者是Com+元件來處理

以往要寫這樣的方式,必須撰寫許多的程式,才能夠實現這樣的架構,而新的ASP.NET 2增加了一個新的Web Control→Object DataSource,可以讓我們寫粉簡短的程式,就能夠做到類似sqlDataSouce的功能,將新增、修改、刪除、查詢包成物件中的方法

建立物件Object

首先,必須將透過中間層的元件的新增修改刪除查詢的動作,包裝成為ASP.NET的物件,這樣Object DataSource才能夠使用物件的方式來達到目的方式步驟如下

  1. 新增一個Class.vb的項目:新增一個與您資料庫溝通的物件,假設名稱為MenuIfno.vb
  2. 為這個物件建立查詢、新增、修改、刪除的Function,Function的內容就是呼叫您所撰寫的中間層元件(COM+,WebService),其中查詢的Function必須傳回DataSet或者DataReader,不過由於DataReader必須在讀取的過程中將Connection持續的連接,再此建議大家回傳DataSet
  3. 假設我已經撰寫好的查詢、修改Function如下
    1. GetMenuAll():傳回所有資料表
    2. GetMenu(NodeId):傳回某一筆資料,NodeId為Key值
    3. UpdateMenu(NodeId,ParentId,sText,sValue,.....)更新資料

Object DataSource設定

接著就是Object DataSouce的設定方式與步驟如下:

  1. 從控制項中拉除一個sqlDataSource1,透過Smart Tag中的Configure Data Source設定sqlDataSource
  2. 在Choose your business object中,就可以下拉看到您剛剛所建立的物件【MenuInfo】→Next
  3. 接著,可以看到有四個頁箋(SELECT,UPDATE,INSERT,DELETE),可以根據需求,進入各頁箋,選擇所要的Function
  4. 例如目前要的是一個顯示全部資料的動作,所以就選擇了SELECT對應到GetAllMenu
  5. 按下Finish就完成了設定

資料瀏覽GridView

接著就建立一個GridView,並且把DataSource設定為剛剛所建立的object DataSource1,接著直接執行就可以將資料表中的資料顯示出來。

Detail View單筆資料修改刪除

  1. 接著我們希望能夠設計一個Detail View將剛剛的Grid View點選的資料顯示在Detail View中作單筆的修改、刪除動作。所以我們將剛剛建立的GridView透過Smart Tag設定Enabled Select Mode。
  2. 接著建立第二個ObjectDataSource2給Detail View,設定頁箋如下:
    1. SELECT:GetMenu(NodeId)
    2. UPDATE:UpdateMenu(NodeId,ParentId,sText,....)
    3. DELETE:DelMenu(NodeId)
  3. 接著由於SELECT的時候有個參數NodeId,需要設定該參數的來源:
    1. 在Paramenter Source設定為Conrtrol
    2. ControlID下拉可以選擇剛剛建立的GridView
    3. 接著按下Finish建立好該ObjectDataSouce2
  4. 點選Object DataSource2設定他的屬性【UpdateParameters】:
    1. 點選...進入設定的畫面中
    2. 選擇NodeId
    3. 設定Parameter Source為Control
    4. 設定ControlID為GridView1
  5. 再來拉出Detail View控制項,將該控制項的DataSource設定為Object DataSource2
  6. 點選DataView並且設定屬性視窗中找到【DataKeyNames】設定主索引為【NodeId】

接著來看看這樣設定的結果,點選某筆資料,就可以在DetailView中顯示該筆資料的內容,並且可以點選編輯,來修改該筆的資料,可以讓我們在撰寫最少的程式下,輕鬆的完成多筆查詢、單筆維護的畫面設計。



 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat