掃描二維碼關注

首頁 APP開(kāi)發小(xiǎo)程序開(kāi)發 微信公衆号 網站建設 營銷推廣 經典案列 産品服務 關于我們

“學習(xí)不僅是掌握知識”

向書(shū)本學習(xí),還要向實踐學習(xí)、向生活學習(xí)。消化已有(yǒu)知識,
而且要力求有(yǒu)所發現、有(yǒu)所發明(míng)、有(yǒu)所創造

ASP.NET 2.0 中的(de)數據源控件(jiàn)(二)

2019/3/25 9:28:55

ASP.NET 2.0 中的(de)數據源控件(jiàn)(二)

SqlDataSource 示例


既然我已經完成了概述,那麽我将對使用(yòng) SqlDataSource 和(hé) ObjectDataSource 來檢索和(hé)修改數據進行(xíng)一下對比。SqlDataSource 控件(jiàn)(它使用(yòng) ADO.NET 2.0 DbProviderFactory 對象)具有(yǒu)将它直接鏈接到(dào) OLE DB 或 ODBC 數據源的(de)屬性。當加載包含鏈接到(dào) SqlDataSource 的(de)數據綁定控件(jiàn)的(de) ASP.NET 頁時,SqlDataSource 直接與基礎數據庫進行(xíng)通信。因而,SqlDataSourceData 源控件(jiàn)不與現有(yǒu)的(de)業(yè)務對象集成。

爲了查看 SqlDataSource 是如(rú)何操作的(de),讓我們先觀察一下 Orders_SDS.aspx 頁。有(yǒu)一個(gè) DropDownList 控件(jiàn),它綁定到(dào)一個(gè)從 Northwind 數據庫中檢索客戶列表的(de) SqlDataSource 源控件(jiàn)。


還有(yǒu)另外一個(gè)名爲 sdsOrdrsDataSource 的(de) SqlDataSource,它用(yòng)于檢索選定客戶的(de)所有(yǒu)訂單顯示了兩個(gè) SqlDataSource 控件(jiàn)和(hé)這個(gè) DropDownList。請注意,sdsOrdersDataSource SqlDataSource 控件(jiàn)使用(yòng) DropDownList 的(de)選定值作爲其存儲過程的(de)參數(prGet_Orders 的(de)參數)。

ProviderName 和(hé) ConnectionString 屬性的(de)組合告訴 SqlDataSource 控件(jiàn)從哪個(gè)數據存儲中獲得數據。盡管這些屬性使 SqlDataSource 成爲檢索和(hé)修改數據的(de)簡單解決方案,但(dàn)遺憾的(de)是,它們在表示層的(de) ASPX 文(wén)件(jiàn)中公開(kāi)了數據庫連接字符串以及 SQL 語句或存儲過程。這通常不是一個(gè)好主意。将該數據以加密形式存儲在配置儲存庫(如(rú)配置文(wén)件(jiàn)或注冊表)中要安全得多。

圖 4 顯示了編輯模式下的(de) Orders_SDS.aspx 頁。分(fēn)頁由 GridView 自動實現(通過将 GridView AllowPaging 屬性設置爲 true,并将 PageSize 屬性設置爲期望的(de)大(dà)小(xiǎo),)。這将告訴網格将其中的(de)行(xíng)分(fēn)頁,并且在“下一頁”或“上(shàng)一頁”鏈接被單擊時自動重新加載網格和(hé)頁。GridView 使用(yòng) TextBox 控件(jiàn)顯示選定行(xíng)的(de)可(kě)編輯列。數據綁定列是通過 asp:BoundField 或 TemplateField 元素定義的(de)。通過設置 DataField 屬性,可(kě)以将 BoundField 綁定到(dào) GridView 的(de)關聯數據源:

<asp:BoundField HeaderText="ShipCity" DataField="ShipCity"
    SortExpression="ShipCity"></asp:BoundField>
這将告訴 GridView 控件(jiàn),當它處于查看模式時,應該在 span 元素中顯示 ShipCity 值。當 GridView 處于編輯模式時,選定行(xíng)中的(de)這一列将在适當的(de) HTML 元素中顯示。在這種情況下,HTML 元素爲 TextBox,因爲它是一個(gè)字符串值。該元素是基于綁定列的(de)數據類型選擇的(de)。例如(rú),如(rú)果該列在 SQL Server 中被定義爲位,則将使用(yòng) CheckBox 控件(jiàn)在編輯模式下顯示該列。

TemplateField 元素在綁定列的(de)行(xíng)爲方式方面提供了更大(dà)的(de)靈活性。請觀察以下摘自 Orders_SDS.aspx 頁的(de)代碼示例:

<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 處于查看模式時,它使用(yòng) TemplateColumn 在 Label 控件(jiàn)中顯示 OrderDate 列;當 GridView 處于編輯模式時,它使用(yòng) TemplateColumn 在 TextBox 控件(jiàn)中顯示 OrderDate 列。您還可(kě)以使用(yòng) FooterTemplate 來告訴 Template 列在頁腳中以不同的(de)方式顯示該列。還可(kě)以使用(yòng) HeaderTemplate、AlternatingItemTemplate 甚至 InsertItemTemplate。還請注意 ASP.NET 2.0 中引入的(de)簡化的(de)綁定語法。OrderDate 的(de)值是通過調用(yòng) Bind 表達式并向它傳遞 GridView 的(de)關聯數據源中列的(de)名稱和(hé)一個(gè)可(kě)選的(de)數據格式字符串表達式來設置的(de)。在該示例中,我使用(yòng)了表示短日期的(de)數據格式字符串。這些屬性都(dōu)可(kě)以通過可(kě)借助于 Visual Studio 2005 中的(de)新增智能(néng)标記功能(néng)訪問的(de)屬性來輕松設置。

ObjectDataSource
GridView 和(hé)其他(tā)數據綁定控件(jiàn)的(de)最出色的(de)功能(néng)之一是,在設置了它們以後,隻需更改單個(gè)屬性,就可(kě)以将它們綁定到(dào) ObjectDataSource 控件(jiàn)


深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04

咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967

更多可(kě)以了解的(de)信息

客戶案列
新聞資訊
資質榮譽
團隊風采
項目進度查詢

售前QQ咨詢
QQ溝通 項目QQ溝通

精銳軟件(jiàn)

Copyright© 2018-2023 深圳市無窮大軟件技術有限公司 All Rights Reserved. 京ICP證000000号 公安備案号:粵公網安備44030502009460号