向書本學習,還要向?qū)嵺`學習、向生活學習。消化已有知識,
而且要力求有所發(fā)現(xiàn)、有所發(fā)明、有所創(chuàng)造
2019/3/25 9:28:55
SqlDataSource 示例
既然我已經(jīng)完成了概述,那么我將對使用 SqlDataSource 和 ObjectDataSource 來檢索和修改數(shù)據(jù)進行一下對比。SqlDataSource 控件(它使用 ADO.NET 2.0 DbProviderFactory 對象)具有將它直接鏈接到 OLE DB 或 ODBC 數(shù)據(jù)源的屬性。當加載包含鏈接到 SqlDataSource 的數(shù)據(jù)綁定控件的 ASP.NET 頁時,SqlDataSource 直接與基礎(chǔ)數(shù)據(jù)庫進行通信。因而,SqlDataSourceData 源控件不與現(xiàn)有的業(yè)務(wù)對象集成。
為了查看 SqlDataSource 是如何操作的,讓我們先觀察一下 Orders_SDS.aspx 頁。有一個 DropDownList 控件,它綁定到一個從 Northwind 數(shù)據(jù)庫中檢索客戶列表的 SqlDataSource 源控件。
還有另外一個名為 sdsOrdrsDataSource 的 SqlDataSource,它用于檢索選定客戶的所有訂單顯示了兩個 SqlDataSource 控件和這個 DropDownList。請注意,sdsOrdersDataSource SqlDataSource 控件使用 DropDownList 的選定值作為其存儲過程的參數(shù)(prGet_Orders 的參數(shù))。
ProviderName 和 ConnectionString 屬性的組合告訴 SqlDataSource 控件從哪個數(shù)據(jù)存儲中獲得數(shù)據(jù)。盡管這些屬性使 SqlDataSource 成為檢索和修改數(shù)據(jù)的簡單解決方案,但遺憾的是,它們在表示層的 ASPX 文件中公開了數(shù)據(jù)庫連接字符串以及 SQL 語句或存儲過程。這通常不是一個好主意。將該數(shù)據(jù)以加密形式存儲在配置儲存庫(如配置文件或注冊表)中要安全得多。
圖 4 顯示了編輯模式下的 Orders_SDS.aspx 頁。分頁由 GridView 自動實現(xiàn)(通過將 GridView AllowPaging 屬性設(shè)置為 true,并將 PageSize 屬性設(shè)置為期望的大小,)。這將告訴網(wǎng)格將其中的行分頁,并且在“下一頁”或“上一頁”鏈接被單擊時自動重新加載網(wǎng)格和頁。GridView 使用 TextBox 控件顯示選定行的可編輯列。數(shù)據(jù)綁定列是通過 asp:BoundField 或 TemplateField 元素定義的。通過設(shè)置 DataField 屬性,可以將 BoundField 綁定到 GridView 的關(guān)聯(lián)數(shù)據(jù)源:
<asp:BoundField HeaderText="ShipCity" DataField="ShipCity"
SortExpression="ShipCity"></asp:BoundField>
這將告訴 GridView 控件,當它處于查看模式時,應(yīng)該在 span 元素中顯示 ShipCity 值。當 GridView 處于編輯模式時,選定行中的這一列將在適當?shù)?HTML 元素中顯示。在這種情況下,HTML 元素為 TextBox,因為它是一個字符串值。該元素是基于綁定列的數(shù)據(jù)類型選擇的。例如,如果該列在 SQL Server 中被定義為位,則將使用 CheckBox 控件在編輯模式下顯示該列。
TemplateField 元素在綁定列的行為方式方面提供了更大的靈活性。請觀察以下摘自 Orders_SDS.aspx 頁的代碼示例:
<asp:TemplateField SortExpression="OrderDate" HeaderText="OrderDate">
<ItemTemplate>
<asp:Label ID="lblOrderDate_Item" Runat="server"
Text=''<%# Bind("OrderDate", "{0:d}") %>''></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtOrderDate_Edit" Runat="server"
Text=''<%# Bind("OrderDate", "{0:d}") %>''></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
當 GridView 處于查看模式時,它使用 TemplateColumn 在 Label 控件中顯示 OrderDate 列;當 GridView 處于編輯模式時,它使用 TemplateColumn 在 TextBox 控件中顯示 OrderDate 列。您還可以使用 FooterTemplate 來告訴 Template 列在頁腳中以不同的方式顯示該列。還可以使用 HeaderTemplate、AlternatingItemTemplate 甚至 InsertItemTemplate。還請注意 ASP.NET 2.0 中引入的簡化的綁定語法。OrderDate 的值是通過調(diào)用 Bind 表達式并向它傳遞 GridView 的關(guān)聯(lián)數(shù)據(jù)源中列的名稱和一個可選的數(shù)據(jù)格式字符串表達式來設(shè)置的。在該示例中,我使用了表示短日期的數(shù)據(jù)格式字符串。這些屬性都可以通過可借助于 Visual Studio 2005 中的新增智能標記功能訪問的屬性來輕松設(shè)置。
ObjectDataSource
GridView 和其他數(shù)據(jù)綁定控件的最出色的功能之一是,在設(shè)置了它們以后,只需更改單個屬性,就可以將它們綁定到 ObjectDataSource 控件
深圳市南山區(qū)南山街道南海大道西桂廟路北陽光華藝大廈1棟4F、4G-04
咨詢電話:136 8237 6272
大客戶咨詢:139 0290 5075
業(yè)務(wù)QQ:195006118
技術(shù)QQ:179981967