首页 | 免费域名 | 个人服务器 | 一流信息监控拦截系统 | 虚拟主机知识库 | ASP 空间 | ASP技术大全 | 下载中心 | 客户服务中心
  7i24 > ASP.Net技术大全 > ASP.Net快速入门 >
    7i24 .Com  
  ASP.NET(bata2)立即上手教程(c#版)-8

7i24.Com不停为您服务
ASP.NET(bata2)立即上手教程(c#版)-8
wincheer(转自ASP.Net中文专业网)
数据绑定服务器控件

数据绑定概述及语法
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.
下例说明绑定到ArrayList。
C# DataBind3.aspx
[运行] | [源文件]
下面的例子说明绑定到DataView。注意DataView类在System.Data 名称空间定义
C# DataBind4.aspx
[运行] | [源文件]
下面的例子说明绑定到Hashtable。
C# DataBind5.aspx
[运行] | [源文件]
绑定表达式或方法
很多时候,在绑定到页面或控制之前,你可能会操作这些数据。下面的例子说明绑定到一个表达式,并返回方法的值。
C# DataBind6.aspx
[运行] | [源文件]
DataBinder.Eval方法
Asp.net框架提供了一个静态方法DataBinder.Eval,可以计算后期数据绑定表达式的值,并可以将结果任意格式化为字符串。DataBinder.Eval是很方便的,他排除了许多开发人员必须作的(通过强制改变值的类型来得到预期的数据类型)显式转换。尤其是在带有模板列表的数据绑定控件中,因为经常需要显式转换数据行和数据字段,所以它特别有用。

仔细看下面的代码,整数将被显示为货币型字符串。使用标准的asp.net数据绑定语法,为了得到数据字段IntegerValue,你必须首先显式转换数据行的类型,然后作为String.Format方法的参数才能得到结果
<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %>

这样的语法实在错综复杂的难以记忆。比较而言,DataBinder.Eval 就很简单了。它带有三个参数:数据项的命名容器、数据字段名称和格式化字符串。 在模板列表如DataList、DataGrid、或 Repeater,命名容器总是Container.DataItem。 Page 是另一个可以被DataBinder.Eval使用的命名容器。
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>

格式化字符串参数是可选的。如果忽略参数,DataBinder.Eval 返回对象类型的值,就象下面的代码这样:
<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>

很重要的一点需要注意:由于受后期绑定影响,DataBinder.Eval与标准的数据绑定语法相比,在执行效率上有明显的差别。因此有选择地使用DataBinder.Eval,特别是不需要对字符串进行格式化的时候。
C# DataBind7.aspx
[运行] | [源文件]
本章小结
l The ASP.NET使用<%# %>符号声明数据绑定语法。
l 你可以绑定数据到数据源、页面或者其他控件的属性、集合、表达式以及从方法返回的结果。
l 列表控件可以绑定到支持Icollection、Ienumerable、或IListSource接口的集合,例如ArrayList、 Hashtable、DataView 和DataReader。
l DataBinder.Eval 是一个后期绑定的静态方法。他的语法比标准的数据绑定更简单,但是性能要差一些。


  2002年1月9日  阅读 1424 次  发送此页给朋友  来源:    版权争议  删除

相关文章:   近期热点:
§ASP.NET(bata2)立即上手教程(c#版)-9
§ASP.NET(bata2)立即上手教程(c#版)-10
§ASP.NET(bata2)立即上手教程(c#版)-11
§ASP.NET(bata2)立即上手教程(c#版)-12

上一篇: ASP.NET(bata2)立即上手教程(c#版)-5
下一篇: ASP.NET(bata2)立即上手教程(c#版)-9
返回上一层...
搜索:

(C)2004-2022 7i24.Com 保留所有权利