ASP.NET(bata2)立即上手教程(c#版)-8
数据绑定服务器控件
数据绑定概述及语法
Asp.net引入了一种新的声明数据绑定的语法。这种极其灵活的语法允许开发者不仅绑定数据源,而且可以绑定简单的属性、集合、表达式、甚至是调用方法所返回的结果。下面的列表显示了这种新语法的一些例子:
简单属性 | Customer: < %# custID % > | 集合 | Orders: < asp:ListBox id="List1" datasource='< %#myArray % >' runat="server"> | 表达式 | Contact: <%# ( customer.First Name + " " + customer.LastName ) %> | 方法结果 | Outstanding Balance: < %# GetBalance(custID) % > |
尽管这种语法看上去和asp中Response.Write的简写方式< %= % >很类似,但他们的运行机理却大不相同。Response.Write的简写语法在页面处理的时候求值,而asp.net数据绑定语法只有当调用DataBind方法的时候才求值。
DataBind是Page和所有服务器控件的一个方法。当你对一个父控件调用DataBind方法的时候,他所包含的子控件都会调用DataBind方法。比如执行DataList1.DataBind(),DataList模板中的所有控件都引用了DataBind方法。在Page调用DataBind方法--- Page.DataBind()或者简单的DataBind() ---导致页面上所有的数据绑定表达式都会被求值。DataBind经常在Page_Load事件中被调用,比如下面的例子:
protected void Page_Load(Object Src, EventArgs E) {
DataBind();
}
你几乎可以在.aspx页面中声明部分的任何地方使用数据绑定表达式,在运行时提供它所计算的预期的数据类型。当求值以后,简单的属性、表达式以及上例中的方法,将向用户显示文本。在这些情况下,数据绑定表达式必须求出一个string类型的值。在集合的例子中,数据绑定表达式所求值的类型,对于ListBox的DataSource 属性来说是有效的。你会发现,在数据绑定表达式中为了得到期望的结果,强制转换结果值的类型,是很有必要的。例如,如果count是一个整数:
Number of Records: < %# count.ToString() % >
绑定简单属性
Asp.net数据绑定语法支持绑定页面的公共变量和属性,以及页面上其他控件的属性。
下面的例子说明了绑定到页面的公共变量和简单属性。注意这些值在调用DataBind()之前已被初始化。
C# DataBind1.aspx
[运行] | [源文件]
下面的例子说明绑定到其他控件的属性。
C# DataBind2.aspx
[运行] | [源文件]
绑定集合和列表
列表服务器控件,如DataGrid、 ListBox 和 HTMLSelect,使用集合作为数据源。下面的例子说明绑定到常用的CLR 集合类型。这些控件只能绑定到支持IEnumerable, ICollection, 或 IListSource 接口的集合。通常,您可以绑定到ArrayList、 Hashtable、 DataView 和 DataReader.
|