• 【转】一些数据格式化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='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 

    完整日期时间格式 
    (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">

    本文来自CSDN博客,转载请标明出处:http://www.cnblogs.com/summer_adai/archive/2010/10/27/1862636.html

  • 相关阅读:
    数据结构小练习
    【BZOJ 3652】大新闻 数位dp+期望概率dp
    【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化
    【Codeforces 506E】Mr.Kitayuta’s Gift&&【BZOJ 4214】黄昏下的礼物 dp转有限状态自动机+矩阵乘法优化
    【BZOJ 4455】 [Zjoi2016]小星星 容斥计数
    凸包小结
    Matrix-Tree定理题表
    PLAN OF HEOI(unfinished)
    (ex)BSGS题表
    exBSGS板子
  • 原文地址:https://www.cnblogs.com/jiangdd/p/2829285.html
Copyright © 2020-2023  润新知