本文詳細介紹了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>