<%# Eval("SchoolEnd") == DBNull.Value ? "" : Convert.ToDateTime(Eval("SchoolEnd")).ToString("yyyy-MM-dd") %>

不带NULL的
<%# ((DateTime)Eval("SE_Start_Date")).ToString("yyyy-MM-dd") %>

<%#Eval("BeginDate", "{0:yyyy-MM-dd}")%> 

 

、   为什么设置了DataFormatString没有效果?



不要忽略BoundField的两个重要属性HtmlEncode和ApplyFormatInEditMode。


HtmlEncode


GridView 使用的 BoundField 与 DataGrid 使用 BoundColumn 不同,BounField 提供了一个 HtmlEncode 属性,提供是否对数据进行HTML编码,降低了 BoundColumn 潜在的Html &Script 嵌入攻击,默认该值是启用的。如果要使用格式化输出,应该关闭此属性。


<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" />
ApplyFormatInEditMode


默认情况下,只有当数据绑定控件处于只读模式时,格式化字符串才能应用到字段值。当数据绑定控件处于编辑模式时,若要将格式化字符串应用到显示的值,应该同时将 ApplyFormatInEditMode 属性设置为 true。


<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" ApplyFormatInEditMode="true" />


2、   DataFormatString的格式


格式化字符串可以为任意字符串,并且通常包含字段值的占位符。


例如:DataFormatString="aaa{n:bbb}ccc" ,其中的aaa和ccc表示任意的字符串;n是从零开始的参数列表中的字段值的索引,因为每个单元格中只有一个字段值,所以n通常为0;bbb为格式字符串代表所们希望数据显示的格式。


3、   GridView数据常用格式化类型


数字 {0:N2} 12.36


数字 {0:N0} 13


数字 {0:D} 12345 12345


数字 {0:D8} 12345 00012345


数字 {0:F} 12345.6789 12345.68


数字 {0:F0} 12345.6789 12346


数字 {0:G} 12345.6789 12345.6789


数字 {0:G7} 123456789 1.234568E8


货币 {0:c2} $12.36


货币 {0:c4} $12.3656


货币 "¥{0:N2}" ¥12.36


科学计数法 {0:E3} 1.23E+001


百分数 {0:P} 12.25%


日期 {0:D} 2006年11月25日


日期 {0:d} 2006-11-25


日期 {0:f} 2006年11月25日 10:30


日期 {0:F} 2006年11月25日 10:30:00


日期 {0:s} 2006-11-26 10:30:00


时间 {0:T} 10:30:00


时间 {0:t} 10:30


HyperLinkField


特别说明HyperLinkField,是因为实现了DataGrid的HyperLinkColumnd所不支持的,多参数格式化链接。通常我们附加在url后面的QueryString不会只有一个,asp.net 1。x 中只有使用绑定列,然后手动写代码:


<asp:DataGrid , dtfi));
输出是


[I]nvariant or [C]urrent Info?: I
01/03/2002
03/01/2002


Thursday, 03 January 2002
Thursday, 03 January 2002 12:55
Thursday, 03 January 2002 12:55:03
01/03/2002 12:55
01/03/2002 12:55:03
January 03
Thu, 03 Jan 2002 12:55:03 GMT
2002-01-03T12:55:03
12:55
12:55:03
2002-01-03 12:55:03Z
Thursday, 03 January 2002 12:55:03
01/03/2002
2002 January
03-Jan-02




[I]nvariant or [C]urrent Info?: C
03/01/2002
03/01/2002


03 January 2002
03 January 2002 12:55
03 January 2002 12:55:47
03/01/2002 12:55
03/01/2002 12:55:47
03 January
Thu, 03 Jan 2002 12:55:47 GMT
2002-01-03T12:55:47
12:55
12:55:47

<%# Eval("SchoolEnd") == DBNull.Value ? "" : Convert.ToDateTime(Eval("SchoolEnd")).ToString("yyyy-MM-dd") %>

不带NULL的
<%# ((DateTime)Eval("SE_Start_Date")).ToString("yyyy-MM-dd") %>

<%#Eval("BeginDate", "{0:yyyy-MM-dd}")%> 

 

、   为什么设置了DataFormatString没有效果?



不要忽略BoundField的两个重要属性HtmlEncode和ApplyFormatInEditMode。


HtmlEncode


GridView 使用的 BoundField 与 DataGrid 使用 BoundColumn 不同,BounField 提供了一个 HtmlEncode 属性,提供是否对数据进行HTML编码,降低了 BoundColumn 潜在的Html &Script 嵌入攻击,默认该值是启用的。如果要使用格式化输出,应该关闭此属性。


<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" />
ApplyFormatInEditMode


默认情况下,只有当数据绑定控件处于只读模式时,格式化字符串才能应用到字段值。当数据绑定控件处于编辑模式时,若要将格式化字符串应用到显示的值,应该同时将 ApplyFormatInEditMode 属性设置为 true。


<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" ApplyFormatInEditMode="true" />


2、   DataFormatString的格式


格式化字符串可以为任意字符串,并且通常包含字段值的占位符。


例如:DataFormatString="aaa{n:bbb}ccc" ,其中的aaa和ccc表示任意的字符串;n是从零开始的参数列表中的字段值的索引,因为每个单元格中只有一个字段值,所以n通常为0;bbb为格式字符串代表所们希望数据显示的格式。


3、   GridView数据常用格式化类型


数字 {0:N2} 12.36


数字 {0:N0} 13


数字 {0:D} 12345 12345


数字 {0:D8} 12345 00012345


数字 {0:F} 12345.6789 12345.68


数字 {0:F0} 12345.6789 12346


数字 {0:G} 12345.6789 12345.6789


数字 {0:G7} 123456789 1.234568E8


货币 {0:c2} $12.36


货币 {0:c4} $12.3656


货币 "¥{0:N2}" ¥12.36


科学计数法 {0:E3} 1.23E+001


百分数 {0:P} 12.25%


日期 {0:D} 2006年11月25日


日期 {0:d} 2006-11-25


日期 {0:f} 2006年11月25日 10:30


日期 {0:F} 2006年11月25日 10:30:00


日期 {0:s} 2006-11-26 10:30:00


时间 {0:T} 10:30:00


时间 {0:t} 10:30


HyperLinkField


特别说明HyperLinkField,是因为实现了DataGrid的HyperLinkColumnd所不支持的,多参数格式化链接。通常我们附加在url后面的QueryString不会只有一个,asp.net 1。x 中只有使用绑定列,然后手动写代码:


<asp:DataGrid , dtfi));
输出是


[I]nvariant or [C]urrent Info?: I
01/03/2002
03/01/2002


Thursday, 03 January 2002
Thursday, 03 January 2002 12:55
Thursday, 03 January 2002 12:55:03
01/03/2002 12:55
01/03/2002 12:55:03
January 03
Thu, 03 Jan 2002 12:55:03 GMT
2002-01-03T12:55:03
12:55
12:55:03
2002-01-03 12:55:03Z
Thursday, 03 January 2002 12:55:03
01/03/2002
2002 January
03-Jan-02




[I]nvariant or [C]urrent Info?: C
03/01/2002
03/01/2002


03 January 2002
03 January 2002 12:55
03 January 2002 12:55:47
03/01/2002 12:55
03/01/2002 12:55:47
03 January
Thu, 03 Jan 2002 12:55:47 GMT
2002-01-03T12:55:47
12:55
12:55:47

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-05
  • 2021-07-14
  • 2021-08-15
  • 2021-09-13
  • 2022-01-14
  • 2021-09-17
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-07
  • 2021-09-01
相关资源
相似解决方案