
- ASP.NET 教程
- ASP.NET - 首頁
- ASP.NET - 簡介
- ASP.NET - 環境
- ASP.NET - 生命週期
- ASP.NET - 第一個示例
- ASP.NET - 事件處理
- ASP.NET - 伺服器端
- ASP.NET - 伺服器控制元件
- ASP.NET - HTML 伺服器控制元件
- ASP.NET - 客戶端
- ASP.NET - 基本控制元件
- ASP.NET - 指令
- ASP.NET - 狀態管理
- ASP.NET - 驗證器
- ASP.NET - 資料庫訪問
- ASP.NET - ADO.net
- ASP.NET - 檔案上傳
- ASP.NET - 廣告輪播
- ASP.NET - 日曆控制元件
- ASP.NET - 多檢視
- ASP.NET - 面板控制元件
- ASP.NET - AJAX 控制元件
- ASP.NET - 資料來源
- ASP.NET - 資料繫結
- ASP.NET - 自定義控制元件
- ASP.NET - 個性化
- ASP.NET - 錯誤處理
- ASP.NET - 除錯
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 資料快取
- ASP.NET - Web 服務
- ASP.NET - 多執行緒
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 資源
- ASP.NET - 快速指南
- ASP.NET - 有用資源
- ASP.NET - 討論
ASP.NET - 資料繫結
每個 ASP.NET 網頁表單控制元件都從其父級 Control 類繼承 DataBind 方法,這使其具有將資料繫結到其至少一個屬性的固有能力。這稱為簡單資料繫結或內聯資料繫結。
簡單資料繫結涉及將任何實現 IEnumerable 介面的集合(項集合)或 DataSet 和 DataTable 類附加到控制元件的 DataSource 屬性。
另一方面,某些控制元件可以透過 DataSource 控制元件將其結構中的記錄、列表或資料列繫結在一起。這些控制元件派生自 BaseDataBoundControl 類。這稱為宣告性資料繫結。
資料來源控制元件幫助資料繫結控制元件實現諸如排序、分頁和編輯資料集合等功能。
BaseDataBoundControl 是一個抽象類,它由另外兩個抽象類繼承
- DataBoundControl
- HierarchicalDataBoundControl
抽象類 DataBoundControl 又被另外兩個抽象類繼承
- ListControl
- CompositeDataBoundControl
能夠進行簡單資料繫結的控制元件派生自 ListControl 抽象類,這些控制元件是
- BulletedList
- CheckBoxList
- DropDownList
- ListBox
- RadioButtonList
能夠進行宣告性資料繫結(更復雜的資料繫結)的控制元件派生自 CompositeDataBoundControl 抽象類。這些控制元件是
- DetailsView
- FormView
- GridView
- RecordList
簡單資料繫結
簡單資料繫結涉及只讀選擇列表。這些控制元件可以繫結到陣列列表或資料庫中的欄位。選擇列表從資料庫或資料來源獲取兩個值;一個值由列表顯示,另一個值被視為對應於顯示的值。
讓我們舉一個小例子來理解這個概念。建立一個包含專案符號列表和 SqlDataSource 控制元件的網站。配置資料來源控制元件以從您的資料庫中檢索兩個值(我們使用與上一章相同的 DotNetReferences 表)。
為專案符號列表控制元件選擇資料來源涉及
- 選擇資料來源控制元件
- 選擇要顯示的欄位,稱為資料欄位
- 選擇值的欄位

應用程式執行後,檢查整個標題列是否繫結到專案符號列表並顯示。

宣告性資料繫結
我們之前在使用 GridView 控制元件的教程中已經使用了宣告性資料繫結。其他能夠以表格方式顯示和操作資料的複合資料繫結控制元件是 DetailsView、FormView 和 RecordList 控制元件。
在下一個教程中,我們將瞭解用於處理資料庫的技術,即 ADO.NET。
但是,資料繫結涉及以下物件
儲存從資料庫檢索到的資料的 DataSet。
資料提供程式,它透過使用連線上的命令從資料庫檢索資料。
資料介面卡,它發出儲存在命令物件中的 select 語句;它還能夠透過發出 Insert、Delete 和 Update 語句來更新資料庫中的資料。
資料繫結物件之間的關係

示例
讓我們採取以下步驟
步驟 (1):建立一個新的網站。透過右鍵單擊解決方案資源管理器中的解決方案名稱,並從“新增項”對話方塊中選擇“類”項,新增一個名為 booklist 的類。將其命名為 booklist.cs。
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; namespace databinding { public class booklist { protected String bookname; protected String authorname; public booklist(String bname, String aname) { this.bookname = bname; this.authorname = aname; } public String Book { get { return this.bookname; } set { this.bookname = value; } } public String Author { get { return this.authorname; } set { this.authorname = value; } } } }
步驟 (2):在頁面上新增四個列表控制元件,一個列表框控制元件、一個單選按鈕列表、一個複選框列表和一個下拉列表,以及這些列表控制元件旁邊的四個標籤。頁面在設計檢視中應如下所示

原始檔應如下所示
<form id="form1" runat="server"> <div> <table style="width: 559px"> <tr> <td style="width: 228px; height: 157px;"> <asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"> </asp:ListBox> </td> <td style="height: 157px"> <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> </asp:DropDownList> </td> </tr> <tr> <td style="width: 228px; height: 40px;"> <asp:Label ID="lbllistbox" runat="server"></asp:Label> </td> <td style="height: 40px"> <asp:Label ID="lbldrpdown" runat="server"> </asp:Label> </td> </tr> <tr> <td style="width: 228px; height: 21px"> </td> <td style="height: 21px"> </td> </tr> <tr> <td style="width: 228px; height: 21px"> <asp:RadioButtonList ID="RadioButtonList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"> </asp:RadioButtonList> </td> <td style="height: 21px"> <asp:CheckBoxList ID="CheckBoxList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged"> </asp:CheckBoxList> </td> </tr> <tr> <td style="width: 228px; height: 21px"> <asp:Label ID="lblrdlist" runat="server"> </asp:Label> </td> <td style="height: 21px"> <asp:Label ID="lblchklist" runat="server"> </asp:Label> </td> </tr> </table> </div> </form>
步驟 (3):最後,編寫應用程式的以下程式碼隱藏例程
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { IList bklist = createbooklist(); if (!this.IsPostBack) { this.ListBox1.DataSource = bklist; this.ListBox1.DataTextField = "Book"; this.ListBox1.DataValueField = "Author"; this.DropDownList1.DataSource = bklist; this.DropDownList1.DataTextField = "Book"; this.DropDownList1.DataValueField = "Author"; this.RadioButtonList1.DataSource = bklist; this.RadioButtonList1.DataTextField = "Book"; this.RadioButtonList1.DataValueField = "Author"; this.CheckBoxList1.DataSource = bklist; this.CheckBoxList1.DataTextField = "Book"; this.CheckBoxList1.DataValueField = "Author"; this.DataBind(); } } protected IList createbooklist() { ArrayList allbooks = new ArrayList(); booklist bl; bl = new booklist("UNIX CONCEPTS", "SUMITABHA DAS"); allbooks.Add(bl); bl = new booklist("PROGRAMMING IN C", "RICHI KERNIGHAN"); allbooks.Add(bl); bl = new booklist("DATA STRUCTURE", "TANENBAUM"); allbooks.Add(bl); bl = new booklist("NETWORKING CONCEPTS", "FOROUZAN"); allbooks.Add(bl); bl = new booklist("PROGRAMMING IN C++", "B. STROUSTROUP"); allbooks.Add(bl); bl = new booklist("ADVANCED JAVA", "SUMITABHA DAS"); allbooks.Add(bl); return allbooks; } protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { this.lbllistbox.Text = this.ListBox1.SelectedValue; } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { this.lbldrpdown.Text = this.DropDownList1.SelectedValue; } protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) { this.lblrdlist.Text = this.RadioButtonList1.SelectedValue; } protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) { this.lblchklist.Text = this.CheckBoxList1.SelectedValue; } }
觀察以下內容
booklist 類有兩個屬性:bookname 和 authorname。
createbooklist 方法是一個使用者定義的方法,它建立了一個名為 allbooks 的 booklist 物件陣列。
Page_Load 事件處理程式確保建立書籍列表。該列表為 IList 型別,它實現了 IEnumerable 介面,並且能夠繫結到列表控制元件。頁面載入事件處理程式將 IList 物件“bklist”與列表控制元件繫結。bookname 屬性將被顯示,authorname 屬性被視為值。
當頁面執行時,如果使用者選擇一本書,其名稱將被選擇並由列表控制元件顯示,而相應的標籤將顯示作者名稱,該名稱是列表控制元件所選索引的對應值。
