首页 > 代码库 > 一些数据格式化-Eval( " ")和DataBinder.Eval(Container.DataItem, " ")的区别及用法

一些数据格式化-Eval( " ")和DataBinder.Eval(Container.DataItem, " ")的区别及用法

 
 
 
 

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语法的环境中使用它。

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用法范例  DataBinder.Eval 它带有三个参数:数据项的命名容器、数据字段名称和格式化字符串。 在模板列表如DataList、DataGrid、或 Repeater,命名容器总是Container.DataItem。 Page 是另一个可以被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>

转换类型 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的基本格式 在绑定数据时经常会用到这个句程序:或者 今天又学到一种,而且微软也说这种方法的效率要比以上两种高。 很有用的,这样可以在前台页面做好多事情了。 还要记住要这样用必须要在前台页面导入名称空间System.Data,否则会生成错误信息。 这种用法其实和是一个道理。 Text=‘‘ 这样的方法是最快的 Text=‘‘ 也可以绑定方法,但方法要是public的 Text=‘‘ 还可以连接多个字段 关键是Container这个东西,它比较神秘。它的名称空间是System.ComponentModel。对于它我还需要进一步理解。 二、DataBinder.Eval实现判断选择 cs里定义DGFormatSex方法 protected string DGFormatSex(string xb) { if(xb == "1") return "男"; else return "女"; } DataBinder.Eval用法范例 DataBinder.Eval用法范例 //显示二位小数 // //{0:G}代表显示True或False // // // //转换类型 ((string)DataBinder.Eval(Container, "DataItem.P_SHIP_TIME_SBM8")).Substring(4,4) {0:d} 日期只显示年月日 {0:yyyy-mm-dd} 按格式显示年月日 {0:c} 货币样式

 

 

 

DataFormatString使用笔记

 

DataFormatString 属性语法如下: DataFormatString=”{0:格式字符串}” 我们知道在DataFormatString 中的 {0} 表示数据本身,而在冒号后面的格式字符串代表所们希望数据显示的格式;另外在指定的格式符号后可以指定小数所要显示的位数。例如原来的数据为「1.56」,若格式设定为 {0:N1},则输出为「1.5」。其常用的数值格式如下表所示: 格式字符串 输入 结果 “{0:C}” 12345.6789 $12,345.68 “{0:C}” -12345.6789 ($12,345.68) “{0:D}” 12345 12345 “{0:D8}” 12345 00012345 “{0:E}” 12345.6789 1234568E+004 “{0:E10}” 12345.6789 1.2345678900E+004 “{0:F}” 12345.6789 12345.68 “{0:F0}” 12345.6789 12346 “{0:G}” 12345.6789 12345.6789 “{0:G7}” 123456789 1.234568E8 “{0:N}” 12345.6789 12,345.68 “{0:N4}” 123456789 123,456,789.0000 “Total: {0:C}” 12345.6789 Total: $12345.68 其常用的日期格式如下表所示: 格式 说明 输出格式 d 精简日期格式 MM/dd/yyyy D 详细日期格式 dddd, MMMM dd, yyyy f 完整格式 (long date + short time) dddd, MMMM dd, yyyy HH:mm F 完整日期时间格式 (long date + long time) dddd, MMMM dd, yyyy HH:mm:ss g 一般格式 (short date + short time) MM/dd/yyyy HH:mm G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss m,M 月日格式 MMMM dd s 适中日期时间格式 yyyy-MM-dd HH:mm:ss t 精简时间格式 HH:mm T 详细时间格式 HH:mm:ss

 

 

 

字符格式化

存储在数据库里的是日期时间,但在页面中只显示日期,之前是在查询时就做了处理,用access里面的mid( format(renewTime,‘yyyy-mm-dd‘),6,5)把日期取出来再显示。今天才看到datalist和gridview里面可以用DataFormatString来进行格式化,使数据按指定的格式显示。

我的例子:

            <asp:DataList ID="dlistNews" runat="server"  >             <ItemTemplate>           <a title=<%#DataBinder.Eval(Container.DataItem,"title")%> target="_blank" href=http://www.mamicode.com/‘sysbin/news/news_show.aspx?id=<%#DataBinder.Eval(Container.DataItem,"id")%>‘>           <%#GetSubString(DataBinder.Eval(Container.DataItem,"title").ToString(),24)%></a>        (<%# DataBinder.Eval(Container.DataItem,"showtime")%>)

<%# DataBinder.Eval(Container.DataItem, "renewtime", "{0:d}")%> 或

<%# DataBinder.Eval(Container.DataItem, "renewtime", "{0:yyyy-MM-dd}")%>               </span>             </ItemTemplate>         </asp:DataList>

如果用bind()来取值,同样把指定格式的字符串放在后面

<ItemTemplate> <asp:Label ID="Label1" runat="server" Text=‘<%# Bind("AddinTime", "{0:yyyy-mm-dd}") %>‘></asp:Label>
</ItemTemplate> </asp:TemplateField>

控制数字:DataFormatString = "{0:F}",是默认格式,显示两位小数,如果需要显示的小数位数为其他

值,DataFormatString = "{0:Fn}"即可.

具体用法:

DataFormatString="{0:格式字符串}"

在DataFormatString 中的 {0} 表示数据本身,而在冒号后面的格式字符串代表所们希望数据显示的格式;

数字、货币格式: 在指定的格式符号后可以指定小数所要显示的位数。例如原来的数据为「1.56」,若格式设定为 {0:N1},则输

出为「1.5」。其常用的数值格式如下表所示:

格式字符串 输入 结果 "{0:C}" 12345.6789 $12,345.68 "{0:C}" -12345.6789 ($12,345.68) "{0:D}" 12345 12345 "{0:D8}" 12345 00012345 "{0:E}" 12345.6789 1234568E+004 "{0:E10}" 12345.6789 1.2345678900E+004 "{0:F}" 12345.6789 12345.68 "{0:F0}" 12345.6789 12346 "{0:G}" 12345.6789 12345.6789 "{0:G7}" 123456789 1.234568E8 "{0:N}" 12345.6789 12,345.68
"{0:N4}" 123456789 123,456,789.0000 "Total: {0:C}" 12345.6789 Total: $12345.68

常用的日期时间格式:

格式 说明 输出格式 d 精简日期格式 MM/dd/yyyy D 详细日期格式 dddd, MMMM dd, yyyy f 完整格式 (long date + short time) dddd, MMMM dd, yyyy HH:mm F 完整日期时间格式
(long date + long time) dddd, MMMM dd, yyyy HH:mm:ss g 一般格式 (short date + short time) MM/dd/yyyy HH:mm G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss m,M 月日格式 MMMM dd s 适中日期时间格式 yyyy-MM-dd HH:mm:ss
t 精简时间格式 HH:mm T 详细时间格式 HH:mm:ss

注意:如果用DataFormatString格式化GridView , 同时设置HtmlEncode = false,才能够使DataFormatString生效.  <asp:BoundField HeaderText="总计" DataField="Total" DataFormatString="{0:C}" HtmlEncode="False">

-----------------------------------------------------------------------------------------------------------------------------------------

DataBinder:数据绑定管理器 Eval:求值 Container:被绑定到的容器,比如GridView,DataList等 DataItem:容器的数据项,包括项、交替模板行 shipname:绑定到容器的字段(来自数据库表字段) 给你扩展下: Eval( " ")和Bind( " ") 这两种一个单向绑定,一个双向绑定
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语法的环境中使用它。
下面的例子演示了如何使用新的简化的Eval数据绑定语法绑定到DataList数据项模板(ItemTemplate)中的Image、Label和HyperLink控件。
<asp:DataList ID= "DataList1 " RepeatColumns= "5 " Width= "600 " runat= "server " DataSourceID= "ObjectDataSource1 "> <ItemTemplate>   <asp:HyperLink ID= "HyperLink1 " runat= "server " NavigateUrl= &apos;<%# Eval( "PhotoID ", "PhotoFormViewPlain.aspx?ID={0} ") %> &apos;>   <asp:Image ID= "Image1

一些数据格式化-Eval( " ")和DataBinder.Eval(Container.DataItem, " ")的区别及用法