数据绑定表达式语法 

使用数据绑定语法,可以将控件属性值绑定到数据,并指定值以对数据进行检索、更新、删除和插入操作。

数据绑定语法

数据绑定表达式包含在 <%#%> 分隔符之内,并使用 EvalBind 函数。Eval 函数用于定义单向(只读)绑定。Bind 函数用于定义双向(可更新)绑定。除了通过在数据绑定表达式中调用 EvalBind 方法执行数据绑定外,还可以调用 <%#%> 分隔符之内的任何公共范围代码,以在页面处理过程中执行该代码并返回一个值。

调用控件或 Page 类的 DataBind 方法时,会对数据绑定表达式进行解析。对于有些控件,如 GridView、DetailsView 和 FormView 控件,会在控件的 PreRender 事件期间自动解析数据绑定表达式,不需要显式调用 DataBind 方法。

下面的代码示例演示如何将数据绑定表达式与 ItemTemplate 中的 FormView 控件结合使用。

Visual Basic
复制代码

<asp:FormView ID="FormView1"
DataSourceID="SqlDataSource1"
DataKeyNames="ProductID"
RunAt="server">
<ItemTemplate>
<table>
<tr><td align=right><B>Product ID:</B></td>       <td><%# Eval("ProductID") %></td></tr>
<tr><td align=right><B>Product Name:</B></td>     <td><%# Eval("ProductName") %></td></tr>
<tr><td align=right><B>Category ID:</B></td>      <td><%# Eval("CategoryID") %></td></tr>
<tr><td align=right><B>Quantity Per Unit:</B></td><td><%# Eval("QuantityPerUnit") %></td></tr>
<tr><td align=right><B>Unit Price:</B></td>       <td><%# Eval("UnitPrice") %></td></tr>
</table>
</ItemTemplate>
</asp:FormView>

C#
复制代码

<asp:FormView ID="FormView1"
DataSourceID="SqlDataSource1"
DataKeyNames="ProductID"
RunAt="server">
<ItemTemplate>
<table>
<tr><td align=right><B>Product ID:</B></td>       <td><%# Eval("ProductID") %></td></tr>
<tr><td align=right><B>Product Name:</B></td>     <td><%# Eval("ProductName") %></td></tr>
<tr><td align=right><B>Category ID:</B></td>      <td><%# Eval("CategoryID") %></td></tr>
<tr><td align=right><B>Quantity Per Unit:</B></td><td><%# Eval("QuantityPerUnit") %></td></tr>
<tr><td align=right><B>Unit Price:</B></td>       <td><%# Eval("UnitPrice") %></td></tr>
</table>
</ItemTemplate>
</asp:FormView>

使用 Eval 方法

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

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

使用 Bind 方法

Bind 方法与 Eval 方法有一些相似之处,但也存在很大的差异。虽然可以像使用 Eval 方法一样使用 Bind 方法来检索数据绑定字段的值,但当数据可以被修改时,还是要使用 Bind 方法。

在 ASP.NET 中,数据绑定控件(如 GridViewDetailsViewFormView 控件)可自动使用数据源控件的更新、删除和插入操作。例如,如果已为数据源控件定义了 SQL Select、Insert、Delete 和 Update 语句,则通过使用 GridViewDetailsViewFormView 控件模板中的 Bind 方法,就可以使控件从模板中的子控件中提取值,并将这些值传递给数据源控件。然后数据源控件将执行适当的数据库命令。出于这个原因,在数据绑定控件的 EditItemTemplateInsertItemTemplate 中要使用 Bind 函数。

Bind 方法通常与输入控件一起使用,例如由编辑模式中的 GridView 行所呈现的 TextBox 控件。当数据绑定控件将这些输入控件作为自身呈现的一部分创建时,该方法便可提取输入值。

Bind 方法采用数据字段的名称作为参数,从而与绑定属性关联,如下面的示例所示:

<EditItemTemplate>
<table>
<tr>
<td align=right>
<b>Employee ID:</b>
</td>
<td>
<%# Eval("EmployeeID") %>
</td>
</tr>
<tr>
<td align=right>
<b>First Name:</b>
</td>
<td>
<asp:TextBox ID="EditFirstNameTextBox" RunAt="Server"
Text='<%# Bind("FirstName") %>' />
</td>
</tr>
<tr>
<td align=right>
<b>Last Name:</b>
</td>
<td>
<asp:TextBox ID="EditLastNameTextBox" RunAt="Server"
Text='<%# Bind("LastName") %>'  />
</td>
</tr>
<tr>
<td colspan="2">
<asp:LinkButton ID="UpdateButton" RunAt="server"
Text="Update" CommandName="Update" />
&nbsp;
<asp:LinkButton ID="CancelUpdateButton" RunAt="server"
Text="Cancel" CommandName="Cancel" />
</td>
</tr>
</table>
</EditItemTemplate>

单击行的 Update 按钮时,使用 Bind 语法绑定的每个控件属性值都会被提取出来,并传递给数据源控件以执行更新操作。

显式调用 DataBind 方法

有些控件,如 GridViewFormViewDetailsView 控件,当它们通过 DataSourceID 属性绑定到数据源控件时,会通过隐式调用 DataBind 方法来执行绑定。但是,有些情况需要通过显式调用 DataBind 方法来执行绑定。

其中一种情况就是使用 DataSource 属性(而非 DataSourceID 属性)将某个控件绑定到数据源控件时。在这种情况下,需要显式调用 DataBind 方法,从而执行数据绑定和解析数据绑定表达式。

另一种情况就是需要手动刷新数据绑定控件中的数据时。假设有这样一个页面,其中有两个控件,这两个控件都显示来自同一数据库的信息(可能使用不同的视图)。在这种情况下,可能需要显式地将控件重新绑定到数据,以保持数据显示的同步。例如,可能有一个显示产品列表的 GridView 控件,和一个允许用户编辑单个产品的 DetailsView 控件。虽然 GridViewDetailsView 控件所显示的数据都来自同一数据源,但被绑定到不同的数据源控件,因为这两个控件使用不同的查询来获取其数据。用户可能会使用 DetailsView 控件更新记录,从而引发由关联的数据源控件执行更新。但是,由于 GridView 控件被绑定到不同的数据源控件,所以,该控件仍将显示旧的记录值,直至页面被刷新时才会更新。因此,在 DetailsView 控件更新数据后,可以调用 DataBind 方法。这会使 GridView 控件更新其视图,并重新执行任何数据绑定表达式以及 <%#%> 分隔符之内的公共范围代码。这样一来,GridView 控件将会反映 DetailsView 控件所做的更新。

详情:http://msdn2.microsoft.com/zh-cn/library/ms178366(VS.80).aspx

数据绑定表达式语法(Eval,Bind区别)相关推荐

  1. 笔记:数据绑定表达式(一)

    数据绑定表达式必须包含在<%#和%>字符之间.格式如下: <tagprefix:tagname property='<%# data-binding expression %& ...

  2. GridView 中 Bind和Eval的区别详解

    Eval()方法在运行时使用反射执行后期绑定计算,因此与标准的ASP.NET数据绑定方法bind相比,会导致性能明显下降.它一般用在绑定时需要格式化字符串的情况下.多数情况尽量少用此方法 Eval 方 ...

  3. 【转】asp.net中bind()和eval()的区别

    今天找资料的时候突然发现了这篇文章,觉得不错就拿来与大家分享,欢迎新手学习. eval()方法 在运行时使用反射执行后期绑定计算,因此与标准的ASP.NET数据绑定方法bind相比,会导致性能明显下降 ...

  4. Bind和Eval的区别详解

    eval()方法在运行时使用反射执行后期绑定计算,因此与标准的ASP.NET数据绑定方法bind相比,会导致性能明显下降.它一般用在绑定时需要格式化字符串的情况下.多数情况尽量少用此方法 Eval 方 ...

  5. Bind和Eval的区别详解(ZT)

    eval()方法在运行时使用反射执行后期绑定计算,因此与标准的ASP.NET数据绑定方法bind相比,会导致性能明显下降.它一般用在绑定时需要格式化字符串的情况下.多数情况尽量少用此方法 Eval 方 ...

  6. Bind和Eval地区别详细解说

    eval()方法在运行时运用反射执行后期绑定计算,因此与标准地ASP.NET数据绑定方法bind对比,会导致性能明显下降.它一般用在绑定时需要格式化字符串地情况下.多数情况尽量少用此方法     Ev ...

  7. 【C语言语法】表达式与语句的区别与联系

      在看题解的时候发现了这样一句话: if(sum>=n)sum-=(l*l),l++; 这里的两个赋值表达式竟然可以用逗号分隔.这样就只需要一个分号,可以不加大括号了,太舒服了,因为我个人写代 ...

  8. mel表达式_表达式和 MEL 语法之间的区别

    直接访问对象属性 在表达式中,可以直接访问对象属性,而在 MEL 中则必须使用 getAttr.setAttr.getParticleAttr 或 setParticleAttr 命令. 以下是一些直 ...

  9. ASP.NET 2.0 的数据源、数据绑定控件概述与区别

    一.Render UI 1 GridView GridView 控件用来在表中显示数据源的值.每列表示一个字段,而每行表示一条记录.GridView 控件支持下面的功能: 绑定至数据源控件,如 Sql ...

最新文章

  1. ionic2.0禁止横屏模式
  2. Microsoft office 2007 word PPT 转pdf的插件(转)
  3. struts2 标签中read-only=true 和disabled的区别
  4. 腾讯最新开源项目登上GitHub热榜:QQ音乐等18项业务都在用,日均PV过亿
  5. Java实现算法导论中有限自动机字符串匹配算法
  6. Ubuntu中配置Java环境变量时,出现command not found问题解决记录
  7. matlab meshc函数_有那些相见恨晚的MATLAB绘图命令
  8. resopnse处理HTTP文件头
  9. 面试了一个31岁程序员,让我有所触动
  10. 【干货】深度学习及在推荐中的实践-美团点评.pdf(附下载链接)
  11. 颜色叠加 java_可绘制Android上的颜色叠加
  12. 为英文的windows 7打上简体中文语言包
  13. cus系统前台改版 beta1.1发布
  14. 强悍的 Linux —— tar.xz 文件的解压
  15. eclipse data source explorer 编辑触发器
  16. HashMap底层实现原理详解
  17. 服务器有些系统更新不能卸载,微软 Win10 更新 KB4577586 发布:永久删除 Adobe Flash Player,补丁无法卸载...
  18. 计算机word文档工作区名称,word文档界面名称 word文档的界面组成
  19. 武汉大学计算机学院期末考试时间,【通知公告】关于2018-2019学年第二学期期末考试工作安排的通知...
  20. 制造业工厂需要关注的工业物联网解决方案

热门文章

  1. cookie怎样存储数据?
  2. ES6快速入门——类与对象
  3. android 自定义view之雷达扫描,基于Android自定义控件实现雷达效果
  4. 右手残疾学计算机学什么专业好,我是右手和右脚残疾 左手和左脚好的 可以学残疾人驾照吗...
  5. python过拟合_梯度下降、过拟合和归一化
  6. 批处理 如果提示错误暂停_dos批处理脚本代码,一键删除目录文件夹例子,dos命令bat教程...
  7. python百万并发压测_100W高并发(转载) - 橙子柠檬's Blog
  8. python连接数据库mysql失败_解决python连接mysql报错问题
  9. oracle的表空间的检查,oracle数据库检查所有表空间使用率的脚本
  10. div内容居中、隐藏及按钮隐藏写法