本文詳細介紹了ASP.NET 2.0高級數據處理中的數據綁定,包括有綁定語法,指定運行時所期望的數據類型;如何綁定到公共變量和頁面的簡單屬性;如何綁定到另一個控件的屬性;如何綁定到通用語言運行時集合類型;如何綁定到ArrayList;如何綁定到DataView等。
在前面的“模板中的數據綁定”部分中我們論述過,ASP.NET包含了一種宣告式的數據綁定語法,用於在數據綁定模板中把數據源字段與控件的屬性相關聯。你也可以在代碼中使用<%# ... >語法來進行任意值的數據綁定,例如頁面和控件屬性、集合、表達式,甚至於方法調用的返回結果。為了強制計算數據綁定的值,你必須在包含數據綁定語法的頁面或控件上調用DataBind方法。下面的表格顯示了ASP.NET中的數據綁定語法的一些例子。
單個屬性 Customer: <%# custID %> 集合 Orders <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server"> 表達式 Contact <%# ( customer.FirstName + " " + customer.LastName ) %> 方法的返回值 Outstanding Balance: <%# GetBalance(custID) %>盡管上面的語法與ASP的Response.Write便捷語法(<%= %>)看起來類似,但是它們的行為卻截然不同。ASP Response.Write便捷語法在頁面處理的時候計算值,而ASP.NET數據綁定語法只在DataBind方法被調用的時候才計算值。
DataBind是頁面和所有務器控件的一個方法。當你調用父控件的DataBind的時候,它會依次調用所有子控件的DataBind方法。例如,DataList1.DataBind()就會調用DataList模板中的所有控件的DataBind方法。調用頁面的DataBind方法--Page.DataBind() 或簡單地調用 DataBind()--會引發頁面上所有的數據綁定表達式的計算操作。通常只在頁面的Page_Load事件中調用DataBind方法,如下面的例子所示。
在.aspx頁面的任何宣告式片斷中,你都可以使用綁定語法,並為它的估值指定運行時所期望的數據類型。上面例子中的簡單屬性、表達式和方法在被計算的時候會向用戶顯示文本內容。在這種情況下,數據綁定表達式的值是String類型的。在上面的集合例子中,數據綁定語法的值的類型是ListBox的DataSource屬性。你會發現在綁定表達式中強制轉換值的類型對於生成期望的結果是必要的。例如,如果count是一個整數:
Number of Records: <%# count.ToString() %>
ASP.NET數據綁定語法支持公共變量、頁面的屬性和頁面中其它控件的屬性的綁定。下面的例子演示了如何綁定到公共變量和頁面的簡單屬性。請注意,在DataBind()被調用之前,這些值都已經初始化過了。
<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
Page.DataBind
End Sub
ReadOnly Property custID() As String
Get
Return "ALFKI"
End Get
End Property
ReadOnly Property orderCount() As Integer
Get
Return 11
End Get
End Property
</script>
<form action="DataBind1_vb.aspx" runat="server">
Customer: <b><%# custID %></b><br />
Open Orders: <b><%# orderCount %></b>
</form>