2009-08-12 18 views
29

Chcę pokazać znak funta i format 0,00, tj. 45,00 GBP, 4,10 GBP. Używam następującego oświadczenia:Ciąg formatu od CultureInfo

<td style="text-align:center"><%# Convert.ToString(Convert.ToSingle(Eval("tourOurPrice"))/Convert.ToInt32(Eval("noOfTickets")), new System.Globalization.CultureInfo("en-GB")) %></td> 

Ale to nie działa. Jaki jest problem.

Czy ktoś może mi pomóc ???

Odpowiedz

66

użyć standardowego format string Currency wraz ze sposobem string.Format że trwa dostawca formatu:

string.Format(new System.Globalization.CultureInfo("en-GB"), "{0:C}", amount) 

The CultureInfo może działać jako dostawca formatu, a także uzyskać prawidłowy symbol waluty dla kultury.

Twój Przykładem może następnie odczytać (rozstawione dla czytelności):

<td style="text-align:center"> 
    <%# string.Format(new System.Globalization.CultureInfo("en-GB"), 
         "{0:C}", 
         Convert.ToSingle(Eval("tourOurPrice")) 
          /Convert.ToInt32(Eval("noOfTickets"))) 
    %> 
</td> 
+0

Czy to rzeczywiście działa? Twój stosuje kulturę do łańcucha znaków, co, jak sądzę, nie będzie miało żadnego wpływu. –

+0

@Joe: Tak, działa - spróbuj i zobacz. – adrianbanks

+0

Oto, co próbowałem: string foo = String.Format (new System.Globalization.CultureInfo ("en-GB"), "{0: C}", Convert.ToString (3.01)); –

2

Spróbuj określić format dokładnym walucie

String.Format(...CultureInfo("en-GB"), "{0:C}".... 
3

Jak o

<%# (Convert.ToSingle(Eval("tourOurPrice"))/Convert.ToInt32(Eval("noOfTickets"))).ToString("C", New System.Globalization.CultureInfo("en-GB")) %> 
1

to powinno działać:

<td style="text-align:center"> 
<%# String.Format(new System.Globalization.CultureInfo("en-GB"), "{0:c}", Convert.ToSingle(Eval("tourOurPrice"))/Convert.ToInt32(Eval("noOfTickets")) %> 
</td> 
1

chciałem dodać dodatkowy powiązany odpowiedź, aby pokazać, jak korzystać z sklonowany obiekt CultureInfo w string.Format() lub StringBuffer.AppendFormat(). Zamiast waluty potrzebowałem sformatować oznaczenie AM/PM dla przewodnika stylu mojego pracodawcy. Oto co zrobiłem:

var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone(); 
culture.DateTimeFormat.AMDesignator = "a.m."; 
culture.DateTimeFormat.PMDesignator = "p.m."; 
.... 
var msg = new StringBuilder(); 
msg.AppendFormat(culture,"Last modified: {0:M/d/yyyy h:mm tt}", ad.DateModified); 

Można zrobić to samo z String.Format():

string strMsg = string.Format(culture, "Last modified: {0:M/d/yyyy h:mm tt}", ad.DateModified);