贾尼文包百度云:ASP.NET 数据绑定概述

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 13:41:52

本文讨论了下列数据绑定主题:

  • 数据绑定概要
    • <%# %> 语法
    • Page.DataBind() 与 Control.DataBind()
  • 列表控件模板中的绑定
    • DataBinder.Eval 方法
    • 显式转换
    • ItemDataBound 事件

数据绑定概要

<%# %> 语法

ASP.NET 引入了一种新的声明语法 <%# %>。该语法是在 .aspx 页中使用数据绑定的基础。所有数据绑定表达式都必须包含在这些字符中。下面的列表包含从多个源进行简单数据绑定的示例:

  • 简单属性(用于客户的语法):

·               <%# custID %>

                         

  • 集合(用于订单的语法):

·               

                         

  • 表达式(用于联系人的语法):

·               <%# ( customer.First Name + "" + customer.LastName ) %>

                         

  • 方法结果(用于未结清余额的语法):

·               <%# GetBalance(custID) %>

                         

在前面的示例中,<%# %> 内联标记用于指示将把特定数据源中的信息放在 .aspx 页中的什么位置。以下数据绑定示例使用 TextBox Web服务器控件:

                       

有关数据绑定语法的详细信息,请参阅以下 .NET Framework 软件开发工具包 (SDK) 文档:

数据绑定表达式语法
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpcondatabindingexpressionsyntax.asp

Page.DataBind() Control.DataBind()

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

这两种方法的使用方式很相似。主要差别在于:调用 Page.DataBind 方法后,所有数据源都将绑定到它们的服务器控件。在显式调用 Web 服务器控件的 DataBind 方法或在调用页面级的Page.DataBind 方法之前,不会有任何数据呈现给控件。通常,可以从 Page_Load 事件调用Page.DataBind(或 DataBind)。

有关 DataBind 方法的详细信息,请参阅以下 .NET Framework SDK 文档:Control.DataBind 方法
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIControlClassDataBindTopic.asp

 

列表控件模板中的绑定

您可以使用列表控件中的模板来绑定和自定义数据源的各个记录。本节提供了三种可用于执行此操作的方法。

DataBinder.Eval 方法

当数据源处理从数据库返回的数据时,它可能包含很多份信息。您可以使用通用的 DataBinder.Eval方法返回数据。在以下代码示例中,“au_id”字段是从容器对象的数据源中返回的:

<%# DataBinder.Eval(Container.DataItem,"au_id")%>

                       

有关 DataBinder.Eval 方法的详细信息,请参阅以下 .NET Framework SDK 文档:

DataBinder.Eval 方法
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIDataBinderClassEvalTopic.asp

显式转换

如果您需要更多控件,可使用显式转换。显式转换使用类型转换关键字。这些关键字充当函数,而由编译器生成内联代码。因此,执行速度要比通过调用函数稍快。下列代码示例使用显式转换: 
Visual C# .NET

// DataTable as the DataSource

<%#((System.Data.DataRowView)Container.DataItem)["au_id"] %>

 

// DataReader as the DataSource

<%#((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

 

// DataReader as the DataSource

<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0]%>

ItemDataBound 事件

您还可以使用控件的 ItemDataBound 事件来绑定数据。当将某个项目的数据绑定到控件时,就会发生该事件。