- 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 屬性被視為值。
當頁面執行時,如果使用者選擇一本書,其名稱將被選擇並由列表控制元件顯示,而相應的標籤將顯示作者名稱,該名稱是列表控制元件所選索引的對應值。