數據源控制項與數據綁定控制項交互並隱藏複雜的數據綁定過程。這些工具向數據綁定控制項提供數據,並支持執行插入、刪除、排序和更新等操作。
每個數據源控制項包裝特定的數據提供程序關係資料庫、XML文檔或自定義類,並有助於:
- Managing connection
- Selecting data
- Managing presentation aspects like paging, caching, etc.
- Manipulating data
在ASP.NET中有許多數據源控制項可用於從SQL Server、ODBC或OLE DB伺服器、XML文件和業務對象訪問數據。
根據數據類型,這些控制項可以分爲兩類:
- Hierarchical data source controls
- Table-based data source controls
用於分層數據的數據源控制項包括:
XMLDataSource-它允許綁定到包含或不包含架構信息的XML文件和字符串。
SiteMapDataSource-它允許綁定到提供站點地圖信息的提供程序。
用於表格數據的數據源控制項包括:
Data source controls | Description |
---|---|
SqlDataSource | It represents a connection to an ADO.NET data provider that returns SQL data, including data sources accessible via OLEDB and ODBC. |
ObjectDataSource | It allows binding to a custom .Net business object that returns data. |
LinqdataSource | It allows binding to the results of a Linq-to-SQL query (supported by ASP.NET 3.5 only). |
AccessDataSource | It represents connection to a Microsoft Access database. |
Data Source Views
數據源視圖是DataSourceView類的對象。表示不同數據操作(如排序、篩選等)的自定義數據視圖。
data source view類充當所有數據源視圖類的基類,這些類定義了數據源控制項的功能。
下表提供了DataSourceView類的屬性:
Properties | Description |
---|---|
CanDelete | Indicates whether deletion is allowed on the underlying data source. |
CanInsert | Indicates whether insertion is allowed on the underlying data source. |
CanPage | Indicates whether paging is allowed on the underlying data source. |
CanRetrieveTotalRowCount | Indicates whether total row count information is available. |
CanSort | Indicates whether the data could be sorted. |
CanUpdate | Indicates whether updates are allowed on the underlying data source. |
Events | Gets a list of event-handler delegates for the data source view. |
Name | Name of the view. |
下表提供了DataSourceView類的方法:
Methods | Description |
---|---|
CanExecute | Determines whether the specified command can be executed. |
ExecuteCommand | Executes the specific command. |
ExecuteDelete | Performs a delete operation on the list of data that the DataSourceView object represents. |
ExecuteInsert | Performs an insert operation on the list of data that the DataSourceView object represents. |
ExecuteSelect | Gets a list of data from the underlying data storage. |
ExecuteUpdate | Performs an update operation on the list of data that the DataSourceView object represents. |
Delete | Performs a delete operation on the data associated with the view. |
Insert | Performs an insert operation on the data associated with the view. |
Select | Returns the queried data. |
Update | Performs an update operation on the data associated with the view. |
OnDataSourceViewChanged | Raises the DataSourceViewChanged event. |
RaiseUnsupportedCapabilitiesError | Called by the RaiseUnsupportedCapabilitiesError method to compare the capabilities requested for an ExecuteSelect operation against those that the view supports. |
The SqlDataSource Control
SqlDataSource控制項表示到關係資料庫(如SQL Server或Oracle資料庫)的連接,或通過OLEDB或開放式資料庫連接(ODBC)訪問的數據。通過兩個重要屬性ConnectionString和ProviderName與數據建立連接。
以下代碼段提供控制項的基本語法:
<asp:SqlDataSource runat="server" ID="MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString='<%$ ConnectionStrings:LocalNWind %>' SelectionCommand= "SELECT * FROM EMPLOYEES" /> <asp:GridView ID="GridView1" runat="server" DataSourceID="MySqlSource" />
在基礎數據上配置各種數據操作取決於數據源控制項的各種屬性(屬性組)。
下表提供了SqlDataSource控制項的相關屬性集,該控制項提供了該控制項的編程接口:
Property Group | Description |
---|---|
刪除命令, 刪除參數, 刪除命令類型 |
Gets or sets the SQL statement, parameters, and type for deleting rows in the underlying data. |
過濾表達式, 過濾器 |
Gets or sets the data filtering string and parameters. |
插入 插入 插入式 |
Gets or sets the SQL statement, parameters, and type for inserting rows in the underlying database. |
選擇命令, 選擇參數, SelectCommandType |
Gets or sets the SQL statement, parameters, and type for retrieving rows from the underlying database. |
SortParameterName | Gets or sets the name of an input parameter that the command's stored procedure will use to sort data. |
最新點評 更新參數, 更新命令類型 |
Gets or sets the SQL statement, parameters, and type for updating rows in the underlying data store. |
以下代碼段顯示了爲數據操作啓用的數據源控制項:
<asp:SqlDataSource runat="server" ID= "MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString=' <%$ ConnectionStrings:LocalNWind %>' SelectCommand= "SELECT * FROM EMPLOYEES" UpdateCommand= "UPDATE EMPLOYEES SET LASTNAME=@lame" DeleteCommand= "DELETE FROM EMPLOYEES WHERE EMPLOYEEID=@eid" FilterExpression= "EMPLOYEEID > 10"> ..... ..... </asp:SqlDataSource>
The ObjectDataSource Control
ObjectDataSource控制項允許用戶定義的類將其方法的輸出與數據綁定控制項相關聯。這個類的編程接口幾乎與SqlDataSource控制項相同。
以下是綁定業務對象的兩個重要方面:
可綁定類應該有一個默認的構造函數,它應該是無狀態的,並且具有可以映射到選擇、更新、插入和刪除語義的方法。
對象必須一次更新一個項,不支持批處理操作。
讓我們直接到一個例子來使用這個控制項。student類是要與對象數據源一起使用的類。這個類有三個屬性:學生id、姓名和城市。它有一個默認的構造函數和一個用於檢索數據的GetStudents方法。
學生班:
public class Student { public int StudentID { get; set; } public string Name { get; set; } public string City { get; set; } public Student() { } public DataSet GetStudents() { DataSet ds = new DataSet(); DataTable dt = new DataTable("Students"); dt.Columns.Add("StudentID", typeof(System.Int32)); dt.Columns.Add("StudentName", typeof(System.String)); dt.Columns.Add("StudentCity", typeof(System.String)); dt.Rows.Add(new object[] { 1, "M. H. Kabir", "Calcutta" }); dt.Rows.Add(new object[] { 2, "Ayan J. Sarkar", "Calcutta" }); ds.Tables.Add(dt); return ds; } }
執行以下步驟將對象與對象數據源綁定並檢索數據:
創建新網站。
通過右鍵單擊解決方案資源管理器中的項目,添加類模板,並在其中放置上述代碼,將類(Students.cs)添加到其中。
構建解決方案,以便應用程式可以使用對類的引用。
在web窗體中放置對象數據源控制項。
通過選擇對象來配置數據源。
爲數據上的不同操作選擇數據方法。在這個例子中,只有一個方法。
將數據綁定控制項(如網格視圖)放置在頁面上,並選擇對象數據源作爲其基礎數據源。
在此階段,設計視圖應如下所示:
運行這個項目,它從students類中檢索硬編碼的元組。
The AccessDataSource Control
AccessDataSource控制項表示到Access資料庫的連接。它基於SqlDataSource控制項並提供更簡單的編程接口。以下代碼段提供了數據源的基本語法:
<asp:AccessDataSource ID="AccessDataSource1 runat="server" DataFile="~/App_Data/ASPDotNetStepByStep.mdb" SelectCommand="SELECT * FROM [DotNetReferences]"> </asp:AccessDataSource>
AccessDataSource控制項以只讀模式打開資料庫。但是,它也可以用於執行插入、更新或刪除操作。這是使用ADO.NET命令和參數集合完成的。
對於來自ASP.NET應用程式內的Access資料庫,更新是有問題的,因爲Access資料庫是一個普通文件,並且ASP.NET應用程式的默認帳戶可能沒有寫入資料庫文件的權限。