Eval与DataBinder.Eval的区别

Posted ChineseMoonGod

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eval与DataBinder.Eval的区别相关的知识,希望对你有一定的参考价值。

DataBinder.Eval的基本格式
DataBinder.Eval(Container.DataItem,"XXX","{0}")
<%# DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%# DataBinder.Eval(Container,"DataItem.xxxx")%> 
还有一种据说微软说效率很高的方式
<%# ((DataRowView)Container.DataItem)["xxxx"]%> 但是这种方式必须要在前台页面导入名称空间System.Data,否则会生成错误信息<%@ Import namespace="System.Data" %>

 

DataBinder.Eval的基本格式 
DataBinder.Eval(Container.DataItem,"XXX","{0}") 
<%# DataBinder.Eval(Container.DataItem,"xxxx")%> 
<%# DataBinder.Eval(Container,"DataItem.xxxx")%> 

问题1、他们是有什么不同? 
问题2、他们是否可以相互替换? 
问题3、DataBinder.Eval(Container.DataItem,"") 这个Container和DataItem分别都是什么? 

答1:Eval是对数据的只读绑定,被绑定的子控件所属的父控件(比如GridView)不能用此子控件接收用户输入的修改。Bind是双向绑定,所谓双向,是数据源---显示界面的双向数 

据流动,即读/写。 
答2:Eval可以替换为Bind,但会降低性能;反之不能替换。 
答3:Container即容器,指父控件;DataItem指父控件所绑定的数据源的当前行,不是字段。 

如果只是显示值<%#Eval("字段名")%>就可以了. 
如果是要修改值<%#Bind("字段名")%>就可以了. 



以下两种的显示是相同的 

<%# Eval("name") %> 

<%# DataBinder.Eval(Container.DataItem,"sex") %>

以上是关于Eval与DataBinder.Eval的区别的主要内容,如果未能解决你的问题,请参考以下文章

<%# Eval("State") %> 或 <%# DataBinder.Eval(Container.DataItem, "state")

在 asp.net 控件的样式属性中使用 DataBinder.Eval()

项目模板中的 <%# DataBinder.Eval(Container.DataItem,"ColumnName") %> 究竟做了啥?

asp.net 中 Eval() Bind() <%%> <%=%> 总结

<%# Eval("discountprice") %>的值保留一位小数

数据绑定