熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET 2.0 中的數據源控件

2013-11-13 10:30:55  來源: .NET編程 

  ASPNET 引入了一系列可以改善數據訪問的新工具包括幾個數據源和數據綁定控件新增種類的數據源控件可以消除 ASPNET x 中要求的大量重復性代碼例如您可以很容易地將 SQL 語句或存儲過程與數據源控件相關聯並且將它們綁定到數據綁定控件更令人感到印象深刻的是通過 ObjectDataSource 控件可以簡化開發和減少代碼並且仍然可以在 n 層體系結構的不同層中抽象業務和數據訪問邏輯
  
  在 NET 問世以前用傳統的 ASP 生成數據網格通常需要編寫大量的代碼以便在遍歷 ADO 記錄集的同時即時生成 HTML 表ASPNET x 通過允許您將基於 XML 的 DataSet 綁定到 ASPNET DataGrid 控件從而使該類型的開發變得更加容易這就減少了生成網格所必需的代碼但是傳統的 ASP 和 ASPNET x 都要求代碼實現分頁排序編輯和行選擇功能通過 ASPNET 中的改進功能可以顯著減少這些代碼的數量以產生帶有完整分頁排序和編輯功能並填充了數據的網格
  
  在這一期的 Data Points 中我將首先演示通過 ASPNET 並使用 SqlDataSource 和一些新的數據綁定控件開發 Web 應用程序是多麼容易請注意我在此使用的是 Beta 版本
  
  大多數企業應用程序都是在多層體系結構之上生成的該體系結構有一個用於存放業務邏輯的中間層以及一個使用一個或多個後端數據庫的數據訪問層我將討論 ObjectDataSource 可以多麼理想地與現有的多層組件集成通過將 ObjectDataSource 控件鏈接到業務對象您可以充分利用現有的多層體系結構來生成完善的 Web UI並且能夠顯著減少代碼 ObjectDataSource 控件還包含一些特殊的屬性使您可以綁定到 ASPNET 和 ADONET 中新近增強的強類型 DataSet 和數據組件 ASPNET 中的其他新功能和改進包括新增的雙向綁定表達式增強的緩存以及幾個新增的可以數據綁定到新的數據源控件的 ASPNET 控件
  
  數據綁定控件
  
  要使用數據源控件必須具有一個用來將它們綁定到的數據綁定控件在 ASPNET 中有幾個新的數據綁定控件包括 GridViewDetailsView 和 FormView 控件如果您喜歡 ASPNET x DataGrid 控件那麼您也會喜歡 ASPNET GridView 控件GridView 在本質上類似於 DataGrid因為它可以綁定到新的數據源控件並且可以用來實現排序編輯和分頁 — 它們需要的代碼都比 DataGrid 少得多(有關 GridView 的詳細信息請參閱 Dino Esposito 在 MSDN?Magazine 的 月刊中發表的文章)
  
  要將 GridView 綁定到數據源控件需要將 GridView 的 DataSourceID 屬性設置為數據源控件的 ID還可以設置 GridView 的其他幾個屬性來增強外觀和用戶交互(我將在稍後的示例中加以演示)
  
  <asp:GridView ID=gvwOrders Runat=server
  DataSourceID=sdsOrdersDataSource
  AutoGenerateColumns=True>
  
  其他控件(例如DropDownList)也可以綁定到數據源控件例如DropDownList 控件可以綁定到檢索雇員列表的 SqlDataSource 控件雇員的全名可以顯示在 DropDownList 中而 EmployeeID 可以作為控件的基礎數據值字段綁定到該控件以下示例定義了一個 DropDownList它將顯示可供選擇的客戶名稱的列表客戶數據被綁定到一個名為 sdsCustomerDataSource 的 SqlDataSource 控件該控件可獲得客戶的 CompanyName 和 CustomerID 字段的列表
  
  <asp:DropDownList ID=ddlCustomers Runat=server AutoPostBack=True
  DataSourceID=sdsCustomersDataSource
  DataTextField=CompanyName
  DataValueField=CustomerID>
  </asp:DropDownList>
  
  在 ASPNET 將控件綁定到數據源控件非常簡單並且不需要任何處於代碼隱藏中的代碼但是如果您願意仍然可以編寫代碼以顯式綁定到控件實際上數據綁定控件的數據源和 DataMember 屬性與 ASPNET x 相比已經得到了改進
  
  數據源控件
  
  在 ASPNET 中有幾個新的數據源控件例如SqlDataSourceObjectDataSourceXmlDataSourceAccessDataSource 和 SiteMapDataSource(如圖 所示)它們全都可以用來從它們各自類型的數據源中檢索數據並且可以綁定到各種數據綁定控件數據源控件減少了為檢索和綁定數據甚至對數據進行排序分頁或編輯而需要編寫的自定義代碼的數量
  
  每個數據源控件都具有類似的屬性以便可以與其各自的數據源進行交互生成 SiteMapDataSource 和 XmlDataSource 是為了檢索分層數據而生成其他數據源控件是為了檢索帶有列和行的基於集合的數據
  
  專門生成 AccessDataSource 以便從 Access 數據庫中檢索數據SqlDataSource 聽起來好像只能使用 SQL Server?但實際情況不是這樣的它實際上可以用來從任何 OLE DB 或符合 ODBC 的數據源中檢索數據
  
  命令類型和參數
  
  SqlDataSource 控件具有四個命令屬性您可以設置這些屬性以告訴 SqlDataSource 如何獲得插入更新和刪除它的數據可以將 SelectCommand 屬性設置為 SQL 語句或存儲過程在任何一種情況下都可以根據需要傳入參數InsertCommandUpdateCommand 和 DeleteCommand 屬性用於告訴 SqlDataSource 使用哪些 SQL 語句(或存儲過程)來修改基礎數據庫中的數據 中的代碼示例顯示了一個 SqlDataSource它將它的 SelectCommand 和 UpdateCommand 屬性設置為參數化的 SQL 語句請注意UpdateParameters 使用 Parameter 元素來指示要用於參數的字段的名稱和數據類型在將 GridView 綁定到該 SqlDataSource 以後這些 UpdateParameters 值就被綁定到受影響行的具有相同名稱的列
  
  您自己對此進行試驗的最簡單方式是在 Visual Studio? 中創建一個 Web 窗體連接到服務器資源管理器窗口中的本地 SQL Server Northwind 數據庫然後將一個表拖到該 Web 窗體這會自動創建一個 SqlDataSource 控件以及一個 GridViewVisual Studio 會自動將 SqlDataSource 控件的 ProviderName 和 ConnectionString 屬性設置為 SQL Server Northwind 數據庫而且所有四個命令屬性都將被設置為適當的 SQL 語句然後您為編輯該 Web 窗體而必須完成的所有工作就是使用智能標記來選中Enable Editing復選框(參見圖
  
 educitycn/img_///gif>

  
GridView設置

  數據源控件還可以使用來自其他控件的參數例如數據源控件可以檢索給定客戶的所有訂單在這種情況下CustomerID 可以是傳遞給 SqlDataSource 控件的 SelectCommand 屬性的 SQL 語句或存儲過程的參數還可以從其他控件(例如DropDownList)檢索 CustomerID並將其直接傳遞到 SqlDataSource 控件的 SQL SelectCommand 中
  
  您可以將控件的值直接鏈接到 SqlDataSource 控件的任一 SQL 語句(SelectCommandInsertCommandUpdateCommand 或 DeleteCommand)的參數還可以指定究竟要將控件的哪個屬性用於該參數例如如果您在上一個示例中不需要 DropDownList 的默認屬性而是需要它的 DataTextField則可以將 ControlParameter 的 PropertyName 屬性設置為 DataTextField
  
  除了 ControlParameter 以外還可以將其他參數類型用於數據源控件如果您要使用新的 ASPNET 個性化功能則可以使用 ProfileParameter 從配置文件對象中檢索參數的值接下來還有幾個從標准 Request 對象的集合中檢索它們的數據的參數對象類型例如CookieParameter 可以用來從 Cookie 中檢索參數的值QueryStringParameter 從任意請求字符串變量中獲得它的值而 FormParameter 從 HTML 窗體的輸入字段中獲得它的值最後SessionParameter 可以用來從會話變量中檢索它的值這些類型的參數為數據源控件提供了多個有關如何設置它們的參數值的選項
  
  SqlDataSource 示例
  
  既然我已經完成了概述那麼我將對使用 SqlDataSource 和 ObjectDataSource 來檢索和修改數據進行一下對比SqlDataSource 控件(它使用 ADONET DbProviderFactory 對象)具有將它直接鏈接到 OLE DB 或 ODBC 數據源的屬性當加載包含鏈接到 SqlDataSource 的數據綁定控件的 ASPNET 頁時SqlDataSource 直接與基礎數據庫進行通信因而SqlDataSourceData 源控件不與現有的業務對象集成
  
  為了查看 SqlDataSource 是如何操作的讓我們先觀察一下 Orders_SDSaspx 頁(參見圖 有一個 DropDownList 控件它綁定到一個從 Northwind 數據庫中檢索客戶列表的 SqlDataSource 源控件
  
 educitycn/img_///gif>

  
通過 SqlDataSource 檢索客戶

  還有另外一個名為 sdsOrdersDataSource 的 SqlDataSource它用於檢索選定客戶的所有訂單 中的代碼(摘自 Orders_SDSaspx — 它可在下載中得到)顯示了兩個 SqlDataSource 控
From:http://tw.wingwit.com/Article/program/net/201311/13863.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.