DataBinder.Eval和Container.DataItem有什么区别

DataGrid控件,在ItemTemplate显示数据时,
DataBinder.eval_r(Container.DataItem,"Name")和Container.DataItem("Name")有什么区别?
 
DataBinder是System.Web里面的一个静态类,它提供了Eval方法用于简化数据绑定表达式的编写,但是它使用的方式是通过Reflection等开销比较大的方法来达到易用性,因此其性能并不是最好的。
 
Container则根本不是任何一个静态的对象或方法,它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性.
因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。如果你的数据源是DataTable,则这个数据项的类型实际是DataRowView.效率高!

DataBinder通常使用的方法
<%# DataBinder.eval_r(Container.DataItem, "ColumnName") %> 
<%# DataBinder.eval_r(Container.DataItem, "ColumnName", null) %> 
<%# DataBinder.eval_r(Container, "DataItem.ColumnName", null) %> 

Container通常使用的方法
<%# ((DataRowView)Container.DataItem)["ColumnName"] %> 
<%# ((DataRowView)Container.DataItem).Row["ColumnName"] %> 
<%# ((DataRowView)Container.DataItem)["adtitle"] %> 
<%# ((DataRowView)Container.DataItem)[n] %> 
<%# ((DbDataRecord)Container.DataItem)[0] %> 
<%# (((自定义类型)Container.DataItem)).属性.ToString() %>//如果属性为字符串类型就不用ToString()了

时间: 2024-08-22 14:22:07

DataBinder.Eval和Container.DataItem有什么区别的相关文章

&amp;amp;lt;%# DataBinder.Eval(Container.DataItem,&amp;amp;quot;Title&amp;amp;quot;) 和&amp;amp;lt;%# Eval(&amp;amp;quot;Title&amp;amp;quot;) %&amp;amp;gt;是一样的吗?

问题描述 我试过了.显示结果一样..原理一样吗?? 解决方案 解决方案二:一样的.前者是在vs2003里用的,后者03不能用.05简化了前者的语法,所以后者是05独有的.当然05用前者也不会错.就好比05不推荐用datagrid一样,你要用还是可以用.解决方案三:LS正解解决方案四:对呀,一楼就说对了.解决方案五:不大一样吧?后者的绑定是单向的,前者是双向的.后者可以从数据库中读取数据,但不能更新数据到数据库中,前者则可以.还请高手指教.解决方案六:楼上胡说谁不一样我就是用Eval绑定更新的解决

Repeater里面能否批量生成服务器控件?id =&amp;amp;#x27;&amp;amp;lt;%# DataBinder.Eval(Container.DataItem,&amp;amp;quot;ss&amp;amp;quot;这种类型的

问题描述 话不多说,先贴代码:<asp:RepeaterID="repOutSide"runat="server"onitemdatabound="repOutSide_ItemDataBound"><HeaderTemplate><tableid="rtable"cellpadding="1"cellspacing="1"border="1&qu

Enabled=&amp;amp;#x27;&amp;amp;lt;%# iif(databinder.eval(container.dataitem,&amp;amp;quot;endtime&amp;amp;quot;)&amp;amp;lt;=datetime.now,Fal

问题描述 如何转换成C#语言呢?<asp:LinkButtonID="LinkButton2"Runat="server"CommandName="stop"CommandArgument='<%#DataBinder.Eval(Container.DataItem,"id")%>'Enabled='<%#(DataBinder.Eval(Container.DataItem,"endtime

浅析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需要使用参数来

数据绑定技术—如何使用DataBinder.Eval()方法进行数据绑定

<%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <html> <script language="C#" runat="server"> void Page_Load(Object semder, EventArgs e) { // 创建数据库连接字符串及S

【转载】Asp.net中DataBinder.Eval用法的总结

摘自 http://www.cnblogs.com/liuzijing688/archive/2008/03/27/1124623.html Asp.net中DataBinder.Eval用法的总结 <%# Bind("Subject") %> //绑定字段<%# Container.DataItemIndex + 1%> //实现自动编号<%# DataBinder.Eval(Container.DataItem, "[n]") %&

深入理解Asp.net中DataBinder.Eval的用法总结_实用技巧

<%# Bind("Subject") %> //绑定字段<%# Container.DataItemIndex + 1%> //实现自动编号<%# DataBinder.Eval(Container.DataItem, "[n]") %>通常使用的方法(这三个性能最好)<%# DataBinder.Eval(Container.DataItem, "ColumnName") %><%# Da

C# Eval在aspx页面中的用法及作用

Eval( " ")和Bind( " ") 这两种一个单向绑定,一个双向绑定,bind是双向绑定,但需数据源支持 ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldname).Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数.缩 短的Eval语法与DataBinder.Eval的不同点在于,

简化的Eval数据绑定语法绑定到DataList数据项模板

bind是双向绑定,但需数据源可更改才能用.ASP.NET 2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem, fieldname)简化为Eval(fieldname).Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数.缩短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性来自动地解析字段,而