資料繫結是 .NET 開發者最熟悉也最強大的功能之一。其靈活語法不僅支援資料源繫結,更能繫結至單純屬性、集合、運算式、方法回傳值。本文深入剖析 .NET 2.0 資料繫結的運作原理與實戰模式。
| 繫結目標 | 範例語法 | 適用場景 |
|---|---|---|
| 簡單屬性 | <%# Customer.Name %> | 單一物件屬性顯示 |
| 集合/列表 | <%# Orders %> | GridView、Repeater、ListView 等清單控制項 |
| 運算式 | <%# (UnitPrice * Quantity).ToString("C") %> | 計算欄位、格式化顯示 |
| 方法回傳值 | <%# GetOutstandingBalance(CustomerID) %> | 複雜商務邏輯封裝 |
DataBind() 是頁面與所有伺服器控制項的核心方法。呼叫時機決定繫結運算式的評估時間點:
// 控制項層級:觸發該控制項及所有子控制項的 DataBind
DataList1.DataBind();
// 頁面層級:觸發頁面上所有繫結運算式運算
Page.DataBind();
// 或簡寫
DataBind();
此機制確保父控制項繫結完成後,子控制項才進行繫結,保證資料上下文正確傳遞。
public partial class CustomerPage : System.Web.UI.Page
{
// 定義頁面屬性作為繫結來源
public string CustID { get; set; }
public int OrderCount { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// 初始化資料(必須在 DataBind() 前完成)
CustID = "ALFKI";
OrderCount = 27;
// 觸發頁面級資料繫結
DataBind();
}
}
}
<div>
客戶:<%# CustID %><br />
未結訂單:<%# OrderCount %>
</div>
客戶:ALFKI 未結訂單:27
| 方法 | 方向 | 語法 | 用途 |
|---|---|---|---|
Eval() | 單向 (唯讀) | <%# Eval("FieldName") %> | 顯示資料、格式化 |
Bind() | 雙向 (可編輯) | <%# Bind("FieldName") %> | GridView/DetailsView 編輯模式回寫 |
ItemType)獲得 IntelliSense 與編譯期檢查掌握資料繫結的生命週期與級聯機制,是開發高效、可維護 Web Forms 應用的關鍵基石。