`

ASP.NET Eval四种绑定方式

阅读更多

ASP.NET Eval四种绑定方式:

1、1.x中的数据绑定语法

<asp:Literal id="litEval2" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "userName")%>' />

2、 2.x简化Eval数据绑定语法

<asp:Literal id="litEval1" runat="server" Text='<%Eval("userName")%>' />

3、第二种方法的方法重载

<a href='<%# Eval("userId","Default.aspx?id={0}")%>'><%# Eval("userName") %></a>

4、eval同时绑定两个值

<a href='<%# string.Format("Default.aspx?id={0}&role={1}", Eval("userId"),Eval("userRole"))%>'><%# Eval("userName") %></a>

eval_r()方法在运行时使用反射执行后期绑定计算,因此与标准的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 方法采用数据字段的名称作为参数,从而与绑定属性关联,如下面的示例所示:

<EditItemTemplate>
<table>
<tr>
<td align=right>
<b>Employee ID:</b>
</td>
<td>
<%# eval_r("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 语法绑定的每个控件属性值都会被提取出来,并传递给数据源控件以执行更新操作。


使用 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_r(Container.DataItem, "IntegerValue", "{0:c}") %>


格式字符串参数是可选的。如果它被忽略,DataBinder.Eval 将返回类型对象的值,如下面的示例所示:
<%# (bool)DataBinder.eval_r(Container.DataItem, "BoolValue") %>
当对模板化列表中的控件进行数据绑定时,DataBinder.Eval 特别有用,因为数据行和数据字段通常都必须强制转换。


在TemplateField模板中为了能够有限制的或者取出数据库中某列的值时,可以用Bind和Eval方法来实现。以下是Bind方法的格式,Eval的格式也是和Bind一样的。 Bind("列的名称","显示的格式文")

比如我们要取个日期型的数据,在数据库中列名是updated,数值是2008/06/01。但是想2008年06月01日这样显示,我们可以这样来写Bind("updated", "{0:yyyy年MM月dd日}"),Eval也是如此。

两者都能读取数据中的值,并显示。当我们使用编辑更新操作时,Bind能够自动的将修改的值更新到数据库中,并显示出修改后的值。但是用了Eval却只能得到错误画面,新的数据没有更新到数据库中。

从这点看来,Bind方法和Eval方法的区别就是:Bind方法在读取和更新数据这2方面都是可以,但是Eval方法只能读取显示数据。所以,我们在选择Bind方法和Eval方法的时候,必须要有争对性,当数据肯定需要更新操作的时候我们应该使用Bind,只是显示数据,不会有任何操作的就可以使用Eval方法。

在更新操作中我们可以在GridView1_RowUpdating事件中操作,例子如下:

如果我们能充分理解Bind方法和Eval方法,其实也就没必要向上面那样去写,都是可以自动完成的。上面的方法除了比较复杂的操作才会用到,这也是一个使用技巧。

分享到:
评论

相关推荐

    ASP.NET中的数据绑定

    声明式数据绑定通过在ASP.NET标记中使用控件属性来完成,如`&lt;asp:BoundField&gt;`或`&lt;asp:TextBox Text='&lt;%# Eval("FieldName") %&gt;'&gt;`。编程式数据绑定则通过代码-behind实现,例如使用`DataSource`属性设置数据源,并...

    asp.net中的数据绑定

    除了这些基础绑定方式,ASP.NET还提供了高级数据绑定控件,如Repeater、FormView和DetailsView,它们提供了更灵活的数据展示和操作功能。例如,Repeater控件允许完全自定义布局,而FormView和DetailsView则适合显示...

    ASP.NET+2.0+数据绑定高级技巧 pdf

    - **传统数据绑定表达式**:在ASP.NET 1.x中,我们通常使用`DataBinder.Eval`来进行数据绑定。 ```html &lt;%# DataBinder.Eval(Container.DataItem, "Price") %&gt; ``` - **ASP.NET 2.0中的简化表达式**:在新版...

    ASP.NET Eval进行数据绑定的方法

    总结起来,ASP.NET 2.0的`Eval`功能提供了一种更直观、更简洁的方式来绑定数据,而内部的`dataBindingContext`堆栈管理则确保了数据绑定的正确执行。然而,这种简化也意味着开发者可能需要更多地依赖框架的内部工作...

    苏鹏asp.net教程之数据库绑定

    3. **数据绑定语法**:在ASP.NET中,使用 &lt;%# %&gt; 标记进行数据绑定,例如 `&lt;%# Eval("ColumnName") %&gt;`, 这会从当前数据项中评估"ColumnName"属性,并将其值插入到HTML输出中。 4. **数据绑定事件**:如BoundField...

    揭秘ASP.NET 2.0的Eval方法.doc

    在ASP.NET 2.0中,Eval方法是一个重要的特性,它简化了数据绑定的语法,使得开发者能够更加灵活地处理数据绑定操作。Eval方法最初定义在`TemplateControl`类中,由于`System.Web.UI.Page`和`System.Web.UI.User...

    ASP.NET DataList 绑定数据库二进制图片

    总的来说,ASP.NET结合SQL Server提供了灵活的方式来处理和展示二进制数据,如图片。通过DataList控件,我们可以轻松地在网页上展示来自数据库的图片,同时利用HTTP处理程序实现二进制数据的动态加载。

    深入ASP.NET数据绑定.doc

    在标题和描述中提到的`&lt;% # Eval("字段名") %&gt;`和`("字段名") %&gt;`是ASP.NET数据绑定表达式,它们用于在页面中显示数据或实现数据的双向绑定。 `Eval`方法用于单向数据绑定,它会从数据源中获取指定字段的值,并将其...

    第七章 asp.net数据绑定控件(一)事例

    数据绑定是ASP.NET中一种强大的机制,它允许我们把数据源(如数据库、XML文件或任何可枚举对象)的数据动态地绑定到UI控件上,使得页面内容可以根据数据源的变化实时更新。在ASP.NET中,有两种主要的数据绑定模式:...

    ASP.NET 2.0 数据绑定

    在ASP.NET 2.0中,数据绑定支持多种方式,包括服务器端绑定和客户端绑定。这种方式极大地简化了数据处理的复杂度,并提高了开发效率。 #### 三、ASP.NET 2.0数据绑定的关键概念 **1. 数据源控制** - ASP.NET 2.0...

    ASP.NET 2.0快速入门(2):ASP.NET 2.0 数据绑定

    3. **两种绑定模式**:ASP.NET 2.0支持两种数据绑定模式——声明式和编程式。声明式绑定通过简单的XML标记实现,如`&lt;asp:BoundField&gt;`,而编程式绑定则通过代码-behind实现,如`Control.DataBind()`方法。 4. **...

    ASP.NET数据绑定技术之数据绑定

    在数据绑定模板中,ASP.NET控件如Label、TextBox等可以与数据源的属性通过Eval()或Bind()方法绑定。例如,&lt;asp:Label ID="ClientIDLabel" runat="server" Text='&lt;%# Eval("ClientID") %&gt;' /&gt;将显示数据源中当前记录...

    .NET中的数据绑定表达式

    `.NET中的数据绑定表达式`主要涉及两种方法:Eval和Bind,以及它们在ASP.NET页面中的使用方式。 数据绑定表达式通常被嵌入在HTML标记或服务器控件的属性中,以`&lt;%# ... %&gt;`的形式出现。例如,我们可以将一个TextBox...

    asp.net数据绑定

    ASP.NET 数据绑定是微软开发的一种强大的技术,用于在Web应用程序中动态显示和操作数据。它允许开发者将数据源(如数据库、XML文件或对象集合)与用户界面元素(如控件)连接起来,使得数据的更新和展示变得更加简单...

    asp.net新闻模块

    ASP.NET 是微软推出的一种基于服务器端的编程模型,用于构建功能丰富的Web应用程序。在本文中,我们将深入探讨一个经典且通用的ASP.NET 2.0新闻模块,它提供了发布、管理和展示新闻的强大功能,是开发企业网站、门户...

    ASP.NET 2.0快速入门(9):ASP.NET 2.0 数据绑定高级技巧

    2. ** declarative data binding**(声明式数据绑定):在ASP.NET中,可以使用 `&lt;%# %&gt;` 语法来声明性地绑定控件到数据源,如`&lt;asp:Label Text="&lt;%# Eval('ColumnName') %&gt;" /&gt;`。Eval方法用于从数据源中检索值,并...

    asp.net动态绑定数据

    &lt;asp:TemplateField HeaderText="所属行业"&gt; (Eval&#40;"IndustryOne"&#41;.ToString()) + "-" + GetIndustryNameByPid(Eval&#40;"industrytwo"&#41;.ToString()) + "-" + GetIndustryNameByPid(Eval&#40;...

    ASP.NET 2.0快速入门(7):ASP.NET 2.0 数据绑定的基本技巧

    ASP.NET 2.0支持一种特殊的语法,称为数据绑定表达式,如`&lt;%# Eval("FieldName") %&gt;`,它可以用来从数据源中获取值并显示在页面上。 7. **数据操作** GridView不仅支持显示数据,还允许用户编辑、插入和删除数据...

Global site tag (gtag.js) - Google Analytics