介紹
在 ASP.NET 2.0 中有幾個新的資料來源控制項,例如,SqlDataSource、ObjectDataSource、XmlDataSource、AccessDataSource 和 SiteMapDataSource。它們全都可以用來從它們各自類型的資料來源中檢索資料,並且可以綁定到各種資料繫結控制項。資料來源控制項減少了為檢索和綁定資料甚至對資料進行排序、分頁或編輯而需要編寫的自訂代碼的數量。
其中 ObjectDataSource 控制項可針對各種基礎資料存放區區(如 SQL 資料庫或 XML)啟用聲明性資料繫結模型。因為頁開發人員也常常將資料檢索(也可能包含商務邏輯)封裝在一個組件對象中,從而在呈現頁和資料提供者之間引入另一個層。ObjectDataSource 控制項允許開發人員使用此傳統的三層結構構造應用程式,同時仍然能夠利用 ASP.NET 中的聲明性資料繫結模型的易用性優點。
關鍵
1、在資料層建立 強型別的DataSet和TableAdapter,TableAdapter查詢可以使用現有的預存程序。註:直接把表或預存程序拖進來會自動建立TableAdapter
2、中介層的類用[System.ComponentModel.DataObject]聲明為資料群組件,CRUD方法分別對應[DataObjectMethod(DataObjectMethodType.Insert)],[DataObjectMethod(DataObjectMethodType.Select)],[DataObjectMethod(DataObjectMethodType.Update)],[DataObjectMethod(DataObjectMethodType.Delete)]
3、web層使用ObjectDataSource展現資料,ObjectDataSource就相當於一個代理。ObjectDataSource只是尋找具有匹配的參數名稱的方法,它不會使用參數的 Type 或 Size,而只是對參數的名稱進行匹配
4、其它
·<asp:Parameter />有ConvertEmptyStringToNull屬性,預設是true。另外還有Direction屬性
·注意<asp:BoundField />的這幾個屬性NullDisplayText,HtmlEncode,ApplyFormatInEditMode,InsertVisible,DataFormatString,ReadOnly
·DataKeyNames有多個值的話用“,”分隔,用<asp:ControlParameter />綁定的話給其加一個“PropertyName”屬性,值類似如下“SelectedDataKey.Values[0]”
·關於綁定:簡單屬性<%# custID %>;集合<asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">;運算式<%# ( customer.FirstName + " " + customer.LastName ) %>;方法<%# GetBalance(custID) %>
·<%# Eval("field1") %> 和 <%# Bind("field1") %>,Eval是單向綁定,Bind是雙向邦定
·<asp:ObjectDataSource />有一個OldValuesParameterFormatString屬性一般不用,不過如果要處理開放式並行存取之類的就會用到。當該屬性的值為“original_{0}”的時候“original_參數名”則為初始值
·還有一些如編程方式給參數賦值,錯誤處理,得到傳回值之類的請看源碼
樣本
相關預存程序和資料層略,見源碼
單例模式的實現