Eval和Bind的区别

eval()方法在运行时使用反射执行后期绑定计算,所以与标准的asp.net数据绑定方法bind相比,会致使性能明显降低。它通常用在绑定时须要格式化字符串的状况下。多数状况尽可能少用此方法   web

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

asp.net中的Bind和Eval:使用 Eval 方法   asp.net

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

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

  Bind 方法与 Eval 方法有一些类似之处,但也存在很大的差别。虽然能够像使用 Eval 方法同样使用 Bind 方法来检索数据绑定字段的值,但当数据能够被修改时,仍是要使用 Bind 方法。ui

  在 asp.net 中,数据绑定控件(如 GridView、DetailsView 和 FormView 控件)可自动使用数据源控件的更新、删除和插入操做。例如,若是已为数据源控件定义了 SQL Select、Insert、Delete 和 Update 语句,则经过使用 GridView、DetailsView 或spa

FormView 控件模板中的 Bind 方法,就能够使控件从模板中的子控件中提取值,并将这些值传递给数据源控件。而后数据源控件将执行适当的数据库命令。出于这个缘由,在数据绑定控件的 EditItemTemplate 或 InsertItemTemplate 中要使用 Bind 函数。.net

  Bind 方法一般与输入控件一块儿使用,例如由编辑模式中的 GridView 行所呈现的 TextBox 控件。当数据绑定控件将这些输入控件做为自身呈现的一部分建立时,该方法即可提取输入值。orm

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

  < 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" />

  < asp:LinkButton ID="CancelUpdateButton" RunAt="server" Text="Cancel" CommandName="Cancel" />   < /td> < /tr> < /table> < /EditItemTemplate> 单击行的 Update 按钮时,使用 Bind 语法绑定的每一个控件属性值都会被提取出来,并传递给数据源控件以执行更新操做。

  asp.net中的Bind和Eval:使用 DataBinder.Eval

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

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

  < %# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %> 将此语法与 DataBinder.Eval 的语法进行比较,后者只有三个参数:数据项的命名容器、数据字段名称和格式字符串。在模板化列表中(如 DataList 类、DataGrid 类或 Repeater 类),命名容器始终是 Container.DataItem。

  < %# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %> 格式字符串参数是可选的。若是它被忽略,DataBinder.Eval 将返回类型对象的值,以下面的示例所示:

  < %# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %> 当对模板化列表中的控件进行数据绑定时,DataBinder.Eval 特别有用,由于数据行和数据字段一般都必须强制转换。

 

NET中Eval()方法大全

.NET技术 2010-02-20 23:58:35 阅读463 评论0   字号: 订阅

<%# Bind("Subject") %> //绑定字段 <%# Container.DataItemIndex + 1%> //实现自动编号 <%# DataBinder.Eval(Container.DataItem, "[n]") %> 一般使用的方法(这三个性能最好) <%# DataBinder.Eval(Container.DataItem, "ColumnName") %> <%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %> <%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %> 其余用法 <%# ((DataRowView)Container.DataItem)["ColumnName"] %> <%# ((DataRowView)Container.DataItem).Row["ColumnName"] %> <%# ((DataRowView)Container.DataItem)["adtitle"] %> <%# ((DataRowView)Container.DataItem)[n] %> <%# ((DbDataRecord)Container.DataItem)[0] %> <%# (((自定义类型)Container.DataItem)).属性.ToString() %>//若是属性为字符串类型就不用ToString()了 DataBinder.Eval用法范例 <%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %> 格式化字符串参数是可选的。若是忽略参数,DataBinder.Eval 返回对象类型的值,
//显示二位小数 <%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %>
//{0:G}表明显示True或False <ItemTemplate> <asp:Image Width="12" Height="12" Border="0" runat="server" AlternateText='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "{0:G}") %>' ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "~/images/{0:G}.gif") %>' /> </ItemTemplate>
//转换类型 ((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4) {0:d} 日期只显示年月日 {0:yyyy-mm-dd} 按格式显示年月日 {0:c} 货币样式 <%#Container.DataItem("price","{0:¥#,##0.00}")%> <%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%> Specifier Type      Format    Output (Passed Double 1.42)   Output (Passed Int -12400) c   Currency         {0:c}      $1.42      -$12,400 d   Decimal          {0:d}     System.FormatException   -12400 e   Scientific       {0:e}     1.420000e+000     -1.240000e+004 f   Fixed point      {0:f}   1.42     -12400.00 g   General          {0:g}   1.42      -12400 n   Number with commas for thousands   {0:n}   1.42      -12,400 r   Round trippable     {0:r}   1.42      System.FormatException x   Hexadecimal     {0:x4}   System.FormatException    cf90
{0:d} 日期只显示年月日 {0:yyyy-mm-dd} 按格式显示年月日
样式取决于 Web.config 中的设置 {0:c}   或 {0:£0,000.00} 货币样式   标准英国货币样式 <system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="en-US" /> </system.web> 显示为 £3,000.10
{0:c}   或 string.Format("{0:C}", price); 中国货币样式 <system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-cn" uiCulture="zh-cn" /> </system.web> 显示为 ¥3,000.10
{0:c}   或 string.Format("{0:C}", price); 美国货币样式 <system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> </system.web> 显示为 $3,000.10

 

<%%> <%= %>

<% %> 放在 HTML中写后台程序代码.  <%= %>  放在HTML中输出一个变量,表达式。。

 

(此篇文章来自xueer8835的专栏,原地址http://blog.csdn.net/xueer8835/article/details/6000309)

相关文章
相关标签/搜索