快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

WEB 窗体页的数据绑定表达式

对 Web 窗体页中的各项控件属性进行数据绑定不是通过直接将属性绑定到数据源来实现的。而是通过使用特别的表达式格式来实现数据绑定的。与要绑定到的数据有关的信息被置入该表达式,然后将表达式的结果分配给控件属性。

例如,假设您要将 TextBox Web 服务器控件绑定到一些数据。您创建数据绑定表达式并将其分配给控件的 Text 属性,以便该值将在控件中显示。

下面的示例说明控件声明在 HTML 视图中的大体形式。控件的 Text 属性被绑定到包含单个记录的数据视图。数据绑定表达式是用字符 <%# 和 %> 分隔的。

<asp:TextBox id="TextBox1" runat="server"
Text=\\\'<%# DataView1(0)("au_lname") %>\\\'>
</asp:TextBox>
同样,可以使用数据绑定表达式来设置 Image Web 服务器控件的 ImageUrl 属性。在这种情况下,您是在从数据库中提取一个字符串,该字符串包含要显示的图形的路径和文件名。一个示例可能类似于如下所示:

<asp:Image id=Image1 runat="server"
ImageUrl=\\\'<%# DataView(0)("productPhotoURL") %>\\\'>
在 Visual Studio 中,“属性”窗口向您提供创建数据绑定表达式的工具。您还可以选择自行创建绑定表达式并在 Web 窗体设计器的 HTML 视图中输入它们。

使用数据绑定表达式的长处
使用数据绑定表达式在以下几个方面为您提供灵活性:

可以使用任何表达式,只要该表达式解析为控件可以使用的值。最常见的是,数据绑定表达式将解析为从数据源导出的值,但它还可以引用该页或其他控件的属性、您在运行时计算出的值或几乎任何其他项。
可以将表达式分配给任何属性,也就是说,可以将任何属性绑定到数据。例如,您可以将与用户首选项有关的信息保留在数据库中,并且使用数据绑定为字体、颜色、大小、样式等实现属性中的那些首选项。此外,可以绑定不止一个控件属性,这使您可以将一个属性绑定到一个数据源,将另一个属性绑定到不同的源。
使用 DataBinder 类用于绑定
尽管您可以实际使用解析为一个值的任何表达式来进行数据绑定,但在大多数情况下,您将绑定到某些类型的数据源。最为常见的情况是数据集或数据视图中的表,表中包含您感爱好的单个记录。为了简化此类型的数据绑定,ASP.NET 服务器控件支持名为 DataBinder 的类,它执行某些提取数据并使其可用于控件属性的工作。

可以通过调用其 Eval 方式来使用 DataBinder 类,这要求两个参数:

对数据容器(通常是数据集)、数据表或数据视图的引用。
对要被导出的单独的值的引用。这通常引用单行(行零)和该行中的列值。
下面的示例说明与上面的文本框所执行的一样的数据绑定,但这一次使用 DataBinder 类。

<asp:TextBox id="TextBox1" runat="server"
Text=\\\'<%# DataBinder.Eval(DataView1, "[0].au_lname") %>\\\'>
</asp:TextBox>
先前设置 Image 控件 ImageUrl 属性的示例可能类似于如下所示。在该示例中,一个格式设置表达式在 DataBinder.Eval 方式的第二个参数(可选)中传递;该表达式将一个路径当作前缀添加到数据中。

<asp:Image id=Image1 runat="server"
ImageUrl=\\\'<%# DataBinder.Eval(Container, "DataItem.ProductImage", "http://myserver/myapps/images/{0}") %>\\\'>
使用 DataBinder 类的长处是:

语法对于所有绑定是一致的,由 Eval 方式所需的参数强制采用的。
Web 窗体页的 Visual Studio 设计工具支持 DataBinder 类。
类自动执行类型转变。例如,假如将一个文本框绑定到包含整数的数据列,DataBinder 类自动将整数转变为字符串。
您可以选择指定一个可转变或修正数据的格式设置表达式。
解析数据绑定表达式
为了提供控件可以绑定到的值,必须在运行时解析数据绑定表达式。通过调用 DataBind 方式(它是 System.Web.UI.Control 类的方式),可以在页处理期间显式执行此步骤。可以为单独的控件调用该方式,或者更为有效的是,可以为 Page 类(也是从 Control 类导出的)调用该方式。此方式级联对所有子控件的调用,所以通过为该页调用此方式一次,您可以为该页上的所有控件调用它。

通常在以下情况下调用 DataBind 方式:

该页第一次运行时,但在填充数据源之后(例如,在您已填充数据集之后)。
在数据源发生更改之后(例如,因为已更新了数据源中的记录)。
下面的示例说明在页初始化事件期间调用 DataBind 方式的典型方法:

\\\' Visual Basic
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SqlDataAdapter1.Fill(DsAuthors1, "authors")
If Not (Me.IsPostBack) Then
Me.DataBind()
End If
End Sub

// C#
private void Page_Load(object sender, System.EventArgs e)
{
SqlDataAdapter1.Fill(dsAuthors1, "authors");
if (!this.IsPostBack)
{
this.DataBind();
}
}
通常不需要在每个来回过程中都调用 DataBind 方式(即在页初始化中不需要检查回发),因为这样做会替换控件中的值。例如,假如您使用 DataGrid 控件,该控件可能包含您要处理的更改。在您调用 DataBind 时,用来自数据源的值代替网格的内容。假如在页初始化期间执行此操作,您将在有机会处理更改前,失去网格中的更改。您而是应通常在为该事件执行了数据处理后,在事件处理程序中调用 DataBind 方式。
返回类别: 教程
上一教程: ASP系列讲座(二)ASP 的新功能
下一教程: ASP设计常见问题及解答精要-4

您可以阅读与"WEB 窗体页的数据绑定表达式"相关的教程:
· 个人主页的数据库解决方案ASP
· 浅谈ASP中WEB页面间的数据传递
· 一个高效的数据分页的存储过程
· 在ASP中用“正则表达式对象”来校验数据的合法性
· 使用数据绑定控件显示数据
    微笑服务 优质保证 索取样品