數據綁定服務器控件
數據綁定概述和語法
ASP.NET 引入了新的聲明性數據綁定語法。這種非常靈活的語法允許開發人員不僅可以綁定到數據源,而且可以綁定到簡單屬性、集合、表達式甚至是從方法調用返回的結果。下表顯示了新語法的一些示例。
protected void Page_Load(Object Src, EventArgs E) { DataBind(); } |
|||
C# | VB | JScript |
如果綁定表達式在運行時計算爲預期的數據類型,則可以在 .aspx 頁的聲明節中的幾乎任何位置使用綁定表達式。上面的簡單屬性、表達式和方法示例在計算時向用戶顯示文本。這些情況下,數據綁定表達式必須計算爲 String 類型的值。在集合示例中,數據綁定表達式計算爲 ListBox 的 DataSource 屬性的有效類型值。您可能會發現有必要轉換綁定表達式中的類型值以產生所需的結果。例如,如果 count
是整數:
Number of Records: <%# count.ToString() %>
綁定到簡單屬性
ASP.NET 數據綁定語法支持綁定到公共變量、頁的屬性和頁上其他控件的屬性。
下面的示例說明如何綁定到公共變量和頁上的簡單屬性。注意這些值在 DataBind()
調用前初始化。
[] | []
源碼
C# DataBind2.aspx
[] | []
C# DataBind3.aspx
[] | []
下面的示例說明如何綁定到 DataView。注意 DataView 類在 System.Data 命名空間中定義。
C# DataBind4.aspx[] | []
C# DataBind5.aspx
[] | []
通常需要在綁定到頁或控件之前操作數據。下面的示例說明如何綁定到表達式和方法的返回值。
C# DataBind6.aspx[] | []
ASP.NET 框架提供了一種靜態方法,計算後期綁定的數據綁定表達式並且可選擇將結果格式化爲字符串。DataBinder.Eval 很方便,因爲它消除了開發人員爲強迫將值轉換爲所需的數據類型而必須做的許多顯式轉換。這在數據綁定模板列表內的控件時尤其有用,因爲通常數據行和數據字段的類型都必須轉換。
請看下面的示例,本例中整數將顯示爲貨幣字符串。使用標準的 ASP.NET 數據綁定語法,必須首先轉換數據行的類型以便檢索數據字段 IntegerValue
。下一步,將此作爲參數傳遞給 String.Format 方法。
<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %> |
|||
C# | VB | JScript |
該語法可能比較複雜,難以記憶。相反,DataBinder.Eval 只是一個具有三個參數的方法:數據項的命名容器、數據字段名和格式字符串。在像 DataList、DataGrid 或 Repeater 這樣的模板列表中,命名容器始終是 Container.DataItem
。Page 是另一個可與 DataBinder.Eval 一起使用的命名容器。
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %> |
|||
C# | VB | JScript |
格式字符串參數是可選的。如果省略它,則 DataBinder.Eval 返回對象類型的值,如下例所示。
<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %> |
|||
C# | VB | JScript |
DataBinder.Eval 會對標準數據綁定語法帶來很明顯的性能損失,因爲它使用後期綁定反射,注意這一點很重要。使用 DataBinder.Eval 時需謹慎,尤其是在不需要字符串格式化時。
[運行示例] | [查看源代碼] |
本節小結
- ASP.NET 聲明性數據綁定語法使用 <%# %> 表示法。
- 可以綁定到數據源、頁或其他控件的屬性、集合、表達式以及從方法調用返回的結果。
- 列表控件可以綁定到支持 ICollection、IEnumerable 或 IListSource 接口的集合,如 ArrayList、Hashtable、DataView 和 DataReader。
- DataBinder.Eval 是用於晚期綁定的靜態方法。它的語法可能比標準數據綁定語法簡單,但性能較低。
綁定到集合和列表
綁定表達式或方法