2024年4月28日发(作者:)

Eval( " ")和Bind( " ") 这两种一个单向绑定,一个双向绑定,bind是双向绑定,但需

数据源支持

2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法

(em, fieldname)简化为Eval(fieldname)。Eval方法

与一样可以接受一个可选的格式化字符串参数。缩 短的Eval语法与

的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的

DataItem属性 来自动地解析字段,而需要使用参数来指定容器。由于

这个原因,Eval只能在数据绑定控件的模板中使用,而不能用于 Page(页面)层。当然,

2.0页面中仍然支持,你可以在不支持简化的Eval语法的环境

中使用它。

下面的例子演示了如何使用新的简化的Eval数据绑定语法绑定到DataList数据项模

板(ItemTemplate)中的Image、Label和HyperLink控件。

Codeasp:DataList ID="DataList1 " RepeatColumns="5 " Width="600 "

runat="server " DataSourceID="ObjectDataSource1 ">

NavigateUrl='<%# Eval( "PhotoID ", "?ID={0} ")%>'>

<%# Eval( "FileName ", "images/thumbs/{0} ")%>/>

Text='<%# Eval( "Caption ") %>' />


TypeName="TableAdapter "

SelectMethod="GetPhotosForAlbum ">

数据绑定也可以作为控件的主题定义(theme definition)的一部分,这样我们就

可以通过改变主题来随意地改变模板化控件的布局和外观。但是Theme(主题)模板中只

能使用Eval(或者 后面讨论的Bind)。绑定到任意的用户代码是被禁止的。

用法

//显示二位小数

<%# (em, "UnitPrice", "${0:F2}") %>

//{0:G}代表显示True或False

CodeItemTemplate>