![]() |
資料來源控制項 (Data Source Controls) 是 ASP.NET 2.0 版的全新控制項, 可以使用宣告方式存取資料來源的資料。例如:宣告資料來源是 Access 資料庫, 就可以存取資料表的記錄資料。
Products 資料表
本文以 Access 資料庫 Products.mdb 作為測試的資料庫, 內含 Products 資料表儲存筆者電腦書的資料, 其欄位如下表所示:
欄位名稱 | 資料類型 | 大小 | 說明 |
ProductNo | 文字 | 6 | 圖書編號 |
ProductName | 文字 | 30 | 圖書名稱 |
ProductPrice | 貨幣 | N/A | 圖書訂價 |
ProductNote | 文字 | 50 | 圖書說明 |
ProductDate | 日期 / 時間 | N/A | 圖書出版日期 |
InStock | 是 / 否 | N/A | 是否有庫存 |
[資料來源控制項的基礎]
在 ASP.NET 1.0/1.1 版存取資料庫需要使用 ADO.NET 物件, 以程式碼連結、開啟、操作和顯示資料表的記錄資料, ASP.NET 2.0 版提供全新的資料來源控制項, 可以將程式碼封裝成伺服端控制項, 只需在控制項宣告資料來源, 就可以存取資料表的記錄資料。
ASP.NET 2.0 版提供 5 種資料來源控制項, 如下所示:
□ SqlDataSource 控制項:存取關聯式資料庫的資料來源。不只可以是 SQL Server, Access 和 Oracle 等也可以, 如果使用 SQL Server, 控制項自動使用 SqlClient 類別來最佳化存取資料庫。
□ AccessDataSource 控制項:存取微軟 Access 資料庫, 屬於 SqlDataSource 控制項的特別版本。
□ ObjectDataSource 控制項:存取商業物件的資料來源, 可以在多層架構中, 存取中間層的資料來源。
□ XmlDataSource 控制項:存取 XML 文件的資料來源。
□ SiteMapDataSource 控制項:建立網站地圖的唯讀資料來源。
[建立資料來源控制項]
ASP.NET 程式可以使用 AccessDataSource 和 SqlDataSource 控制項來存取 Access 和 SQL Server 2005 Express 資料庫。
AccessDataSource 控制項
AccessDataSource 控制項宣告的資料來源, 可以存取 Access 資料庫檔案, 如下所示:
<asp:AccessDataSource Id="Users" Runat="server" DataFile="~/Users.mdb" SelectCommand="SELECT * FROM Users"/> |
上述標籤建立名為 Users 的 AccessDataSource 控制項, 可以建立資料庫檔案 Users 的資料來源, SQL 指令是取得所有記錄資料。其相關屬性如下表所示:
屬性 | 說明 |
DataFile Access | 資料庫檔案名稱, "~/" 是指根目錄 |
DataSourceMode | 資料來源模式是 DataSet 或 DataReader |
SelectCommand | SQL 查詢指令 SELECT |
ASP.NET 程式碼可以使用資料來源控制項的 DataBind() 方法, 來重建資料繫結, 如下所示:
Users.【DataBind()】 |
SqlDataSource 控制項
SqlDataSource 控制項可以存取關聯式資料庫, 我們需要提供 ProvideName 和 ConnectionString 來建立資料庫連結, 如下圖所示:
<asp:SqlDataSource Id="Users" Runat="server" ProviderName="System.Data.OleDb" SelectCommand="SELECT * FROM Users"/> |
上述標籤建立 SqlDataSource 控制項, 使用 OleDb 方式建立 Access 資料庫連結, 其屬性說明, 如下表所示:
屬性 | 說明 |
ProviderName | 提供者名稱是 System.Data.OleDb 或 System.Data.SqlClient |
ConnectionString | 資料庫連結字串, 也就是建立 Connection 物件的連結字串 |
上表的 ConnectionString 屬性可以在 Page_Load() 程序指定連結字串, 如下所示:
Sub Page_Load(Sender As Object, E As EventArgs) Users.【ConnectionString = "Provider=" & _】 【"Microsoft.Jet.OLEDB.4.0;Data Source=" & _】 【Server.Mappath("/Ch10/Users.mdb")】 End Sub |
在 Web 控制項使用 DataSourceID 屬性來與資料來源控制項建立繫結, 如下所示:
<asp:ListBox Id="listbox" Width="100px" 【DataSourceID="Users"】 Runat="server" DataTextField="Name"/> |
上述標籤的 DataSourceID 屬性是資料來源控制項的 Id 屬性值, 表示此控制項是由此資料來源控制項取得所需的資料。
ASP.NET 範例程式
這個 ASP.NET 程式使用資料來源控制項建立資料庫的資料來源, 以便建立 ListBox 控制項的選項清單, 如下所示:
01: <%@ Page Language="VB" %> 02: 03: Sub Select_Click(Sender As Object, E As EventArgs) 04: If listbox.SelectedIndex > -1 Then 05: label.Text = "選擇的姓名: " & _ 06: listbox.SelectedItem.Text 07: End If 08: End Sub 09: </script> 10: <html> 11: <head><title>Ch10-1-2.aspx</title></head> 12: <XBODY> 13: <h3>ListBox控制項 - Access資料來源控制項</h3><hr> 14: <form Runat="server"> 15: <asp:AccessDataSource Id="Users" Runat="server" 16: DataFile="~/Users.mdb" 17: SelectCommand="SELECT * FROM Users"/> 18: <asp:ListBox Id="listbox" Width="100px" 19: DataSourceID="Users" Runat="server" 20: DataTextField="Name"/> 21: <asp:Button Text="選擇" onfiltered="Select_Click" 22: Runat="server"/><p> 23: <asp:Label Id="label" Font-Size="10pt" Runat="server"/> 24: </form> 25: </XBODY> 26: </html> |
程式說明
在第 15 ~ 17 列是 AccessDataSource 資料來源控制項, 可以取得 Access 資料庫 Users.mdb 的記錄資料, 第 18 ~ 20 列是 ListBox 控制項, DataTextField 屬性指定顯示欄位是 Name。
第 3 ~ 8 列是 Button 控制項的事件處理程序, 可以顯示 ListBox 控制項選取的選項名稱。
網頁預覽
啟動瀏覽程式執行 ASP.NET 程式, 可以看到 ListBox 控制項, 如下圖所示:
在上述圖例選擇選項 (選項是 Users 資料表的記錄資料) , 按【選擇】鈕, 可以在下方顯示選取的選項名稱。
全站熱搜