1、数据绑定Eval方法VS数据绑定Bind方法
<%# Eval(“ProductID”) %>
<%# Bind(“ProductID”)%>
Eval:单向绑定,数据只读
Bind:双向绑定,可读可执行Insert/Update/…..操作
详细介绍:在ASP.NET的数据绑定的控件中,如GridView, DetailsView, 以及FormView这些控件能够自动对数据源进行Update, Delete 和 Insert操作。Bind方法通常用在数据控件中的EditItemTemplate或InsertItemTemplate模板中。
Demo:
<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方法绑定的TextBox值就会被传入到数据源控件中进行更新操作。
2、与简单的业务实体属性绑定
简单业务实体:
Class CArtwork
{
//公共属性
Public int ID {…}
Public string Title {….}
Public string Owner {….}
Public DateTime DateCompleted {…}
Public bool IsRecommend {…}
…..
}
使用Eval和Bind 方法可以直接与实体的公共属性进行绑定,若私有或受保护的则不能进行绑定。
Demo:
<asp:Label ID=”labTitle” runat=”server” Text=’<%# Eval(“Title”)%>’ ></asp:Label>
<asp:Label ID=”labOwner” runat=”server” Text=’<%# Bind(“Owner”) %>’ ></asp:Label>
3、作为变量进行数据绑定
这种情况主要用在QueryString中,或则应用在需要对字段进行格式化显示。
a) 控件属性中之绑定一个数据字段
Demo:
<asp:HyperLink ID=”hpl” runat=”server” Text=’<%# Eval(“Title”)%>’ NavigateUrl=’<%# Bind(“ID”,”Artwork.aspx?id={0}”)%>’ ></asp:HyperLink>
b) 日期绑定时的格式化
Demo:
<asp:Label ID=”labDate” runat=”server” Text=’<%# Bind(“DateCompleted”,”{0:yyyy-MM-dd}”)%>’ ></asp:Label>
c) 两个业务实体的属性同时绑定到一个字符串
Demo:
<asp:HyperLink ID=”hpl” runat=”server” Text=’<%# Bind(“Title”)%>’ NavigateUrl=’<%# string.Format(“~/Spaces/{0}/artwork/{1}.aspx”, Eval(“Owner”), Eval(“ID”))%>’ ></asp:HyperLink>
注意,这里数据绑定方法只能是Eval,不能使用Bind方法。
4、绑定新闻标题,只显示标题的前几个字符
这种情况在新闻中应用的最常见,主要是为了在显示时,页面样式要保持一致,防止标题过长而在显示数据的时候,破环页面整体的布局。
Demo:
<asp:HyperLink ID=”hplTitle” runat=”server” ToolTip=’<%# Bind(“Title”)%>’ NavigateUrl=’<%# DataBinder.Eval(Container.DataItem,”Title”).ToString().Length > 10 ? DataBinder.Eval(Container.DataItem,”Title”).ToString().Substring(0,10) : DataBinder.Eval(Container.DataItem,”Title”).ToString()%>’ ></asp:HyperLink>
5、与复杂的业务实体进行绑定
复杂业务实体
Class CArtist
{
//公共属性
Public string ID {…}
Public string Name {…}
//包含成员类属性
Public CArtwork Artwork {…}
…….
}
若要绑定CArtist对象中CArtwork属性中的Title进行绑定,则可以使用下面的绑定方式:
<asp:Label ID=”labTitle” runat=”server” Text=’<%# DataBinder.Eval(Container.DataItem,”Artwork.Title”)%>’></asp:Label>