文章教程

12.1数据绑定概要

8/31/2020 9:37:14 PM 人评论 次浏览

12.1 数据绑定概要

数据绑定就是把数据源和控件相关联并由控件负责自动显示数据的一种特性。数据绑定的关键特征,它是声明性的而不是编程性的,绑定后的优点分离网页中的控件和代码。ASP.NET中涉及的数据绑定有以下几种。

alt 使用<%# 表达式 %>。

alt 使用DataSource属性。

alt 使用Eval方法。

12.1.1 使用<%# 表达式 %>绑定数据

对于<%# 表达式 %>这种绑定方式,无论是HTML标记,还是Web服务器控件都非常实用,比如,将HTML文本框文本要绑定到页面的一个字段UserName(注:这个字段必须为公有字段或受保护字段,即访问修饰符为public或protected),在HTML源中可以这样绑定。

alt

Web服务器控件绑定。

alt

此句子将字段UserName绑定到TextBox控件。

也可以在表达式中使用方法绑定。

alt

在为对象确定并设置了特定数据源后,必须将数据绑定到这些数据源,可以使用Page.DataBind方法和Control.DataBind方法。

这两种方法的使用方式相似,主要差别在于调用Page.DataBind方法后,所有数据源都将绑定到其服务器控件。而调用Control.DataBind方法,则是将数据源绑定到被调用的服务器控件及其所有子控件。

在显式调用Web服务器控件的DataBind方法或在调用页面级的Page.DataBind方法之前,不会有任何数据呈现给控件。通常在Page_Load事件中调用Page.DataBind(或DataBind)。

示例12-1:绑定数据

alt

前台使用<%# 表达式 %>绑定,代码如下。

alt

运行结果如图12-1所示。

alt

图12-1 运行结果

12.1.2 使用DataSource属性绑定数据

通常使用DataSource属性绑定列表控件,列表信息可以是自定义的对象集合(如ArrayList或HashTable),也可以是行的集合(如DataReader或DataSet)。ASP.NET带有如下几个支持重复值绑定的基本列表控件。

CheckBoxList:复选框组,可通过数据绑定动态生成。

DataList:用来显示模板定义的数据绑定列表。

DropDownList:单选下拉列表框控件。

ListBox:允许单选或多选的列表控件。

RadioButtonList:可通过数据绑定自动生成一组单选按钮。

在使用DataSource属性绑定数据时,需将list-bound控件的DataSource属性链接到数据源,ASP.NET会自动给list-bound控件填充数据。要把list-bound控件绑定到DataSet,必须设置以下属性。

DataSource:指定包含数据的DataSet。

DataMember:因为DataSet中可能有多个数据表,所以指定要显示的DataTable表名。

DataTextField:指定显示在页面上的值的字段(绑定到行时)或属性(绑定到对象时)。

DataValueField:该属性从数据项获得的值不会在页面中显示,相反,它被保存到底层HTML标签的value特性上。

使用DataSource数据源后,还需要调用list-bound控件的DataBind方法来连接DataSet、DataReader等数据源。

示例代码如下。

alt

12.1.3 使用Eval方法绑定数据源

通常Eval方法用于定义单向(只读)绑定,Eval方法可计算数据绑定控件(如GridView、DetailsView和FormView控件)的模板中的后期绑定数据表达式。在运行时,Eval方法调用DataBinder对象的Eval方法,同时引用命名容器的当前数据项。命名容器通常包含完整记录的数据绑定控件的最小组成部分,如GridView控件中的一行。因此,只能对数据绑定控件模板内的绑定使用Eval方法。

Eval方法以数据字段的名称作为参数,从数据源的当前记录返回一个包含该字段值的字符串。可以提供第二个参数来指定返回字符串的格式,该参数为可选参数。字符串格式参数使用为String类的Format方法定义的语法。

下面以FormView控件为例,演示Eval方法的使用。

alt

除了Eval方法外,还有Bind方法,Bind方法用于定义双向(可更新)绑定。虽然可以像使用Eval方法一样使用Bind方法来检索数据绑定字段的值,但当数据可以被修改时,必须使用Bind方法。

在ASP.NET中,数据绑定控件,如GridView、DetailsView和FormView控件等,可自动使用数据源控件的更新、删除和插入操作。比如,如果已为数据源控件定义了SQL Select、Insert、Delete和Update语句,则可以通过使用GridView、DetailsView或FormView控件模板中的Bind方法,就可以让控件从模板中的子控件中提取值,并将这些值传递给数据源控件,然后数据源控件将执行适当的数据库命令。因此,在数据绑定控件的EditItemTemplate模板或InsertItemTemplate模板中要使用Bind方法。

下列以DetailsView控件为例,演示Bind方法的使用。

alt

除了上面所说的控件外,ASP.NET还提供了一些功能强大的数据绑定控件,如GridView。

教程类别