資料來源控制項 (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 資料表的記錄資料) , 按【選擇】鈕, 可以在下方顯示選取的選項名稱。

arrow
arrow
    全站熱搜
    創作者介紹

    Fong Mong Fe 發表在 痞客邦 留言(0) 人氣()