注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

心情挺好的博客

正在等你光临呢 呵呵

 
 
 

日志

 
 
关于我

喜欢摄影的朋友看过来:) 有时间就跟我一起去拍照去吧. QQ272751 上海圣玛丽摄影化妆培训学校 16年专业摄影培训化妆培训学校 电话:15900513500。 http://www.smlsh.com

网易考拉推荐

体会Bind和Eval的不同用法  

2009-04-10 16:02:43|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

今天在用DataList的模板列的时候习惯性地像在03中那样去给模板列的绑定字段加个处理函数:

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客<asp:Label runat="server" Text='<%#ConvertState(Bind("Status"))%>'></asp:Label>

     可是竟然出错:当前上下文中不存在名称“Bind” 。    

     后来又习惯性地想把绑定字段单独拿出来显示,又提示:警告 2 设计器文件生成失败: 必须将对 Bind 的调用分配给模板中的控件的属性。 感觉很郁闷,于是把Bind换成Eval一点问题都没了。

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客<asp:Label runat="server" Text='<%#ConvertState(Eval("Status"))%>'></asp:Label>

   上网查一下才发现二者的区别:

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

Eval 方法是静态(只读)方法,该方法采用数据字段的值作为参数并将其作为字符串返回。Bind 方法支持读/写功能,可以检索数据绑定控件的值并将任何更改提交回数据库。

使用 Eval 方法

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

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

使用 Bind 方法

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

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

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

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

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客<EditItemTemplate>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客  <table>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客    <tr>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      <td align=right>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客        <b>Employee ID:</b>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      </td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      <td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客        <%# Eval("EmployeeID") %>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      </td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客    </tr>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客    <tr>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      <td align=right>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客        <b>First Name:</b>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      </td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      <td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客        <asp:TextBox RunAt="Server"

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客           Text='<%# Bind("FirstName") %>' />

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      </td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客    </tr>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客    <tr>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      <td align=right>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客        <b>Last Name:</b>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      </td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      <td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客        <asp:TextBox RunAt="Server"

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客             Text='<%# Bind("LastName") %>'  />

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      </td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客    </tr>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客    <tr>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      <td colspan="2">

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客        <asp:LinkButton RunAt="server"

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客           Text="Update" CommandName="Update" />

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客          

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客        <asp:LinkButton RunAt="server"

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客           Text="Cancel" CommandName="Cancel" />

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客      </td>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客    </tr>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客  </table>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客</EditItemTemplate>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客

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

使用 DataBinder.Eval

ASP.NET 提供了一个名为 DataBinder.Eval 的静态方法,该方法计算后期绑定的数据绑定表达式,并将结果格式化为字符串(可选)。利用此方法,可以避免许多在将值强制为所需数据类型时必须执行的显式强制转换操作。

例如,在下面的代码片段中,一个整数显示为货币字符串。使用标准的 ASP.NET 数据绑定语法,必须首先强制转换数据行的类型以便检索数据字段 IntegerValue。然后,这将作为参数传递到 String.Format 方法:

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %>

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客

将此语法与 DataBinder.Eval 的语法进行比较,后者只有三个参数:数据项的命名容器、数据字段名称和格式字符串。在模板化列表中(如 DataList 类、DataGrid 类或 Repeater 类),命名容器始终是 Container.DataItem。

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>

格式字符串参数是可选的。如果它被忽略,DataBinder.Eval 将返回类型对象的值,如下面的示例所示:

体会Bind和Eval的不同用法 - 心情挺好 - 心情挺好的博客<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>

当对模板化列表中的控件进行数据绑定时,DataBinder.Eval 特别有用,因为数据行和数据字段通常都必须强制转换。

  评论这张
 
阅读(282)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017