ASP.NET DataBinder.Eval()方法的使用简介

<%# Bind("Subject") %> // 绑定字段

<%# Container.DataItemIndex + 1%> // 实现自动编号

<%# 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()

 

DataBinder.Eval 用法范例

<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>

格式化字符串参数是可选的。如果忽略参数, DataBinder.Eval 返回对象类型的值,

 

// 显示二位小数

<%# DataBinder.Eval(Container.DataItem, "UnitPrice", "${0:F2}") %>

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

<ItemTemplate>

<asp:Image Width="12" Height="12" Border="0" runat="server"

AlternateText='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "{0:G}") %>'

ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Discontinued", "~/images/{0:G}.gif") %>' />

</ItemTemplate>

// 转换类型

((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4)

{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} 货币样式    标准英国货币样式

<system.web>

      <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="en-US" />

</system.web>

显示为 3,000.10

 

{0:c}   string.Format("{0:C}", price); 中国货币样式

<system.web>

      <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-cn" uiCulture="zh-cn" />

</system.web>

显示为 3,000.10

 

{0:c}   string.Format("{0:C}", price); 美国货币样式

<system.web>

      <globalization requestEncoding="utf-8" responseEncoding="utf-8" />

</system.web>

显示为 $3,000.10

 

DataBinder.Eval(Container.DataItem,"Name") Container.DataItem("Name") 有什么区别?

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

DataBinder.eval 绑定不必关心数据来源 (Dataread dataset) 。不必关心数据的类型 eval 会把这个数据对象转换为一个字符串。在底层绑定做了很多工作,使 用了反射性能。正因为使用方便了,但却影响了数据性能。当于 dataset 绑定时, DataItem 其实式一个 DataRowView (如果绑定的是一个 数据读取器( dataread )它就是一个 IdataRecord 。)因此直接转换成 DataRowView 的话,将会给性能带来很大提升。

使用时注意: 1. 注意字段名的大小写(要特别注意)。如果和查询的不一致,在某些情况下会导致比 <%# DataBinder.Eval(Container.DataItem, " 字段名 ") %> 还要慢。 2. 如果想进一步提高速度,可采用 <%# ((System.Data.DataRowView)Container.DataItem)[0] %> 的方法。不过其可读性不高。

// DataSet 做数据源时

// 正常情况 (C#)

<%# ((System.Data.DataRowView)Container.DataItem)["Title"] %>

 

// 绑定日期字段格式字符串

<%# Convert.ToDateTime(((System.Data.DataRowView)Container.DataItem)

["FbTime"]).ToString("yyyy MM dd ") %>

<%# DataBinder.Eval(Container, "DataItem.FbTime","{0:yyyy MM dd }") %>

 

// 字符串绑定超过指定长度截断

<%# DataBinder.Eval(Container.DataItem, "Text").ToString().Trim().Length>7?

DataBinder.Eval(Container.DataItem, "Text").ToString().Trim().Substring

(0,7):DataBinder.Eval(Container.DataItem, "Text").ToString().Trim() %>

 

// 价格格试化为 2 位小数

 

<%# Convert.ToDecimal(((System.Data.DataRowView)Container.DataItem) ["Price"]).ToString("F2") %>

 

<%# DataBinder.Eval(Container, "DataItem.Price","{0:F2}") %>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值