How to fix date format in ASP .NET BoundField (DataFormatString)?

前端 未结 7 1540

I have a dynamic BoundField (for a DetailsView) with the following code:

BoundField bf1 = new BoundField();
bf1.DataField = \"CreateDate\";
bf1.DataFormatStr         


        
相关标签:
7条回答
  • 2020-12-30 21:59

    very simple just add this to your bound field DataFormatString="{0: yyyy/MM/dd}"

    0 讨论(0)
  • 2020-12-30 22:03

    You could add dataformatstring="{0:M-dd-yyyy}" attribute to the bound field, like this:

    <asp:BoundField DataField="Date" HeaderText="Date" DataFormatString="{0:dd-M-yyyy}" />
    

    source: cant format datetime using dataformatstring

    0 讨论(0)
  • 2020-12-30 22:03

    The following links will help you:

    In Client side design page you can try this: {0:G}

    OR

    You can convert that datetime format inside the query itself from the database:

    0 讨论(0)
  • 2020-12-30 22:04

    I had the same problem, only need to show shortdate (without the time), moreover it was needed to have multi-language settings, so depends of the language, show dd-mm-yyyy or mm-dd-yyyy.

    Finally using DataFormatString="{0:d}, all works fine and show only the date with culture format.

    0 讨论(0)
  • 2020-12-30 22:07

    Determine the data type of your data source column, "CreateDate". Make sure it is producing an actual datetime field and not something like a varchar. If your data source is a stored procedure, it is entirely possible that CreateDate is being processed to produce a varchar in order to format the date, like so:

    SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate 
    FROM TableName ...
    

    Using CONVERT like this is often done to make query results fill the requirements of whatever other code is going to be processing those results. Style 126 is ISO 8601 format, an international standard that works with any language setting. I don't know what your industry is, but that was probably intentional. You don't want to mess with it. This style (126) produces a string representation of a date in the form '2013-04-29T18:15:20.270' just like you reported! However, if CreateDate's been processed this way then there's no way you'll be able to get your bf1.DataFormatString to show "29/04/2013" instead. You must first start with a datetime type column in your original SQL data source first for bf1 to properly consume it. So just add it to the data source query, and call it by a different name like CreateDate2 so as not to disturb whatever other code already depends on CreateDate, like this:

    SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate, 
           TableName.CreateDate AS CreateDate2
    FROM TableName ...
    

    Then, in your code, you'll have to bind bf1 to "CreateDate2" instead of the original "CreateDate", like so:

    BoundField bf1 = new BoundField();
    bf1.DataField = "CreateDate2";
    bf1.DataFormatString = "{0:dd/MM/yyyy}";
    bf1.HtmlEncode = false;
    bf1.HeaderText = "Sample Header 2";
    
    dv.Fields.Add(bf1);
    

    Voila! Your date should now show "29/04/2013" instead!

    0 讨论(0)
  • 2020-12-30 22:15
    https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 
    
    
    In The above link you will find the answer
    
    **C or c**
    
        Displays numeric values in currency format. You can specify the number of decimal places.
        Example:
    
    Format: {0:C}
    123.456 -> $123.46
    
    **D or d**
    
        Displays integer values in decimal format. You can specify the number of digits. (Although the type is referred to as "decimal", the numbers are formatted as integers.)
        Example:
            Format: {0:D}
        1234 -> 1234
        Format: {0:D6}
        1234 -> 001234
    
        **E or e**
        Displays numeric values in scientific (exponential) format. You can specify the number of decimal places.
        Example:
        Format: {0:E}
        1052.0329112756 -> 1.052033E+003
        Format: {0:E2}
        -1052.0329112756 -> -1.05e+003
    
    **F or f**
    Displays numeric values in fixed format. You can specify the number of decimal places.
    Example:
    Format: {0:F}
    1234.567 -> 1234.57
    Format: {0:F3}
    1234.567 -> 1234.567
    
    **G or g**
    Displays numeric values in general format (the most compact of either fixed-point or scientific notation). You can specify the number of significant digits.
    Example:
    Format: {0:G}
    -123.456 -> -123.456
    Format: {0:G2}
    -123.456 -> -120
    
    F or f
    Displays numeric values in fixed format. You can specify the number of decimal places.
    Format: {0:F}
    1234.567 -> 1234.57
    Format: {0:F3}
    1234.567 -> 1234.567
    
    G or g
    Displays numeric values in general format (the most compact of either fixed-point or scientific notation). You can specify the number of significant digits.
    Format: {0:G}
    -123.456 -> -123.456
    Format: {0:G2}
    -123.456 -> -120
    
    N or n
    Displays numeric values in number format (including group separators and optional negative sign). You can specify the number of decimal places.
    Format: {0:N}
    1234.567 -> 1,234.57
    Format: {0:N4}
    1234.567 -> 1,234.5670
    
    P or p
    Displays numeric values in percent format. You can specify the number of decimal places.
    Format: {0:P}
    1 -> 100.00%
    Format: {0:P1}
    .5 -> 50.0%
    
    R or r
    Displays Single, Double, or BigInteger values in round-trip format.
    Format: {0:R}
    123456789.12345678 -> 123456789.12345678
    
    X or x
    Displays integer values in hexadecimal format. You can specify the number of digits.
    Format: {0:X}
    255 -> FF
    Format: {0:x4}
    255 -> 00ff
    
    0 讨论(0)
提交回复
热议问题