Avatar billede baitianlong Nybegynder
23. oktober 2008 - 11:14 Der er 6 kommentarer og
1 løsning

formattering af double i asp.net

Hvordan formatterer man tal naar man udskriver i html'en med f.eks <%# Eval("pris") %>?
Avatar billede aaberg Nybegynder
23. oktober 2008 - 12:25 #1
ToString() metoden på en double har en overload som tager en format-string ind som parameter. Se dette link for forskellige format-strings:
http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo(VS.85).aspx

Hvis du f.eks. angiver formatstrengen "c", vil det blive formateret som currency. Et eksempel:

double d = 1.23456789;
string formattedDouble = d.ToString("c");

Nu indeholder formattedDouble variablen værdien "kr 1,23".
Avatar billede aaberg Nybegynder
23. oktober 2008 - 12:29 #2
Hvis du ikke kan bruge en af de forhåndsdefinerede formatstrenge, kan du bruge en Custom Format String. Se dette link:

http://msdn.microsoft.com/en-us/library/0c899ak8(VS.85).aspx

et eksempel:
double d = 1.23456789;
string formattedDouble = d.ToString("####.##");

Nu indeholder formattedDouble variablen værdien "1,23"
Avatar billede aaberg Nybegynder
23. oktober 2008 - 12:31 #3
Og her kommer et link til en lidt bedre beskrivelse af standard format strings, som også beskrives i det første link.
http://msdn.microsoft.com/en-us/library/dwhawy9k(VS.85).aspx
Avatar billede baitianlong Nybegynder
23. oktober 2008 - 12:42 #4
Hej,

Det var mere hvordan man implementerede det i en <%# Eval... hvor man ikke kan skrive ToString("0.00")

Det fandt jeg saa ud af her http://msdn.microsoft.com/en-us/library/2d76z3ck.aspx :

<%# DataBinder.Eval(Container.DataItem, "Prisprmaaned", "{0:F2}") %>

Men tak for links'ne alligevel, du kan bare smide et svar :)
Avatar billede aaberg Nybegynder
23. oktober 2008 - 12:50 #5
Ok, jeg misforstod spørgsmålet lidt. Men den format string du skal angive (Der du angiver: "{0:F2}"), er den samme som den du bruger i ToString(), så du kan godt bruge de links jeg har givet.
Avatar billede arne_v Ekspert
25. oktober 2008 - 02:02 #6
Du kan godt bruge ToString i din repeater - du skal bare caste til det rigtige først.

Eksempel:

<%@ import namespace="System.Collections.Generic" %>
<html>
<head>
<script language="C#" runat="server">
public class D
{
    private double v;
    public D(double v)
    {
        this.v = v;
    }
    public double V
    {
        get
        {
            return v;
        }
    }
}
void Page_Load(Object sender, EventArgs e)
{
    List<D> lst = new List<D>();
    lst.Add(new D(1));
    lst.Add(new D(2));
    lst.Add(new D(3));
    rep.DataSource = lst;
    rep.DataBind();
}
</script>
</head>
<body>
<form runat=server>
    <table border>
        <asp:Repeater id="rep" runat="server">
            <ItemTemplate>
                <tr>
                <td><%# DataBinder.Eval(Container.DataItem, "V", "{0:f2}") %></td>
                <td><%# ((double)DataBinder.Eval(Container.DataItem, "V")).ToString("f2") %></td>
                <td><%# ((D)Container.DataItem).V.ToString("f2") %></td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
</form>
</body>
</html>
Avatar billede mikalj Nybegynder
30. oktober 2008 - 15:20 #7
<%# DataBinder.Eval(Container.DataItem, "V", "{0:f2}") %>
kan også skrives bare som
<%# Eval("V", "{0:f2}") %>
Så længe det er inde i en databound control (repeater, gridview, etc.)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester