zoukankan      html  css  js  c++  java
  • 【转载】一些数据格式化Eval( " ")和DataBinder.Eval(Container.DataItem, " ")的区别及用法&DataFormatString使用笔记

    一些数据格式化-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
    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">

  • 相关阅读:
    oracle常用命令
    批量导出docker镜像
    python中的xpath
    __call__, __str__
    闭包
    ORM操作
    nginx跨域请求
    docker-compose命令
    nginx 之 websocket长连接
    nginx--proxy_set_header
  • 原文地址:https://www.cnblogs.com/summer_adai/p/1862636.html
Copyright © 2011-2022 走看看