eval和bind都是绑定datatable或者其他(集合,等)中的内容,那么他们有什么区别呢?性能方面怎么样呢?eval有哪几种用法呢?本文将做详细介绍:ASP.NET中的Eval和DataBinder.Eval方法
bind是双向绑定,但需数据源可更改才能用。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只能在数据绑定控件的模板中使用,而不能用于Page(页面)层。当然,ASP.NET 2.0页面中仍然支持DataBinder.Eval,你可以在不支持简化的Eval语法的环境中使用它。 用法<%# Bind("Subject") %> //绑定字段<%# Container.DataItemIndex + 1%> //实现自动编号<%# Container.ItemIndex %> //Repeater自动编号<%# DataBinder.Eval(Container.DataItem, "[n]") %>通常使用的方法(這三個性能最好)<%# DataBinder.Eval(Container.DataItem, "ColumnName") %><%# DataBinder.Eval(Container.DataItem, "ColumnName", null) %><%# DataBinder.Eval(Container, "DataItem.ColumnName", null) %>其他用法<%# ((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()了 Eval用法DataBinder.Eval范例<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>格式化字符串参數是可选的。如果忽略参数,DataBinder.Eval 返回对象类型的值, //显示两位小数<%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %> 格式:{0:d} 日期只显示年月日{0:yyyy-mm-dd} 按格式显示年月日{0:c} 货币样式<%#Container.DataItem("price","{0:¥#,##0.00}")%><%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%>Specifier Type Format Output (Passed Double 1.42) Output (Passed Int -12400) c Currency {0:c} $1.42 -$12,400 d Decimal {0:d} System.FormatException -12400 e Scientific {0:e} 1.420000e+000 -1.240000e+004 f Fixed point {0:f} 1.42 -12400.00 g General {0:g} 1.42 -12400 n Number with commas for thousands {0:n} 1.42 -12,400 r Round trippable {0:r} 1.42 System.FormatException x Hexadecimal {0:x4} System.FormatException cf90 {0:d} 日期只显示年月日{0:yyyy-mm-dd} 按格式显示年月日 样式取决于 Web.config 中的设置{0:c} 或 {0:£0,000.00} 货币样式,标准英国货币样式 显示为£3,000.10 {0:c} 或 string.Format("{0:C}", price); 中国货币样式 显示为 ¥3,000.10 {0:c} 或 string.Format("{0:C}", price); 美国货币样式 Eval(" ")绑定两个字段:
CommandArgument=‘<%#Eval("dyid").ToString()+Eval("dyid1").ToString()+… %>‘这种形式就行 你把Eval("").ToString()当成一个普通字符串,而‘<%# %>‘保留就行,你高兴怎么处理就怎么处理, 所有字符串的操作都有效,你还可以用静态函数来处理这些字符串。 <asp:TextBox ID="TextBox5" runat="server" class="inputwidth100" Text=‘<%# Eval("RZMJ").ToString()+Eval("LDDW").ToString() %>‘></asp:TextBox>
区别:
绑定表达式 <%# Eval("字段名") %> <%# Bind("字段名") %> 区别 eval是只读数据,Bind是可更新的.(可以读取和写入)
对于程序员来说最根本的区别是:1.Bind是可更新的,是Bind绑定列可编辑,并且可以和数据源控件交互,直接和数据库交互,但是用Bind的话,程序端的自定义操作就不能用了,比如Convert,ToString()等,或自己写的函数,在程序端都不可以2.eval是只读数据,用eval的话不可以和数据源控件交互,是单向的,但是可以自定义操作比如上面的<%# Eval("字段名").ToString().Trim()%> 本人从来和数据库交互自己写代码,所以对我来说操作的Eval更方便,基本不用Bind,而且以前写过,绑定泛型的时候Bind都不支持嵌套类 下面接受啊<%%> <%= %>
<% %> 放在 HTML中写后台程序代码. <%= %> 放在HTML中输出一个变量,表达式。。
时间: 2024-10-25 22:53:54