1.DataBinder.Eval和Eval的区别
ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,而DataBinder.Eval需要使用参数来指定容器。Eval就是使用反射的方式来进行通用化的绑定,这样我们就完全没有必要关心被绑定的数据源是什么类型,在很多场合下这是非常有益的。从性能方式来考虑,强类型绑定肯定要比反射绑定性能来得好。当然我们在选择是使用强类型绑定还是反射绑定时,主要还是取决你的需要。我个人认为,为了使用解决方案通用化,而不必在关心绑定的数据类型是什么类型,应尽量使用Eval的方式来绑定字段。在实践当中,绑定字段的消费上还不是非常多的,为了灵活和通用这点性能损失我认为是值得的。另外就是如上的特殊字段的情况,我当然也可以使用强类型绑定的方式来解决:
2.Eval和Bind的区别
Eval:绑定的是只读数据的显示;Bind:可以绑定只读数据也可以绑定更新数据。
3.ASP.NET中DataBinder.Eval用法
<%# DataBinder.Eval(Container.DataItem, "ColumnName") %> 正常绑定
<%# DataBinder.Eval(Container.DataItem, "UnitPrice", "{0:F2}") %> 保留两位小数
<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-MM-dd}")%> 时间格式化
<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %> 转换类型
4.ASP.NET中Eval的用法
<%# (Eval("if_delete")).ToString == "yes" ?"已删除":"未删除"%>
<%# GetStr (Eval("if_delete")) %> GetStr 为后台方法
5.ASP.NET中Bind的用法
<%# Bind("Subject") %>
<%# Bind("AddinTime", "{0:yyyy-mm-dd}") %>