2010-11-29 5 views
1

J'ai un problème étrange. Nous utilisons des langues hollandaises et françaises sur notre site (nl-NL/fr-FR)Le format ToString() ne fonctionne pas

Je suis lié à un gridview et la chose étrange est, la valeur numérique-saparator (dot) ne s'affiche pas bien pour le français (fr-FR)

ASP.NET

protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    Label lbla_min_10 = new Label(); 
    lbla_min_10 = e.Row.FindControl("lbla_min_10") as Label; 
    lbla_min_10.Text = ((int)DataBinder.Eval(e.Row.DataItem, "a_min_10")).ToString("#,#.###"); 
    //.... 
} 

par exemple, La valeur DB est 24369
en néerlandais il affiche 24.369 et

en français il affiche 24 369 -> il n'y a pas de séparateur DOT, mais un espace vide.

Je regardais la source de vue et le code semble le même, sauf Theres est un (point) en NL et (espace) dans FR .....

Est-ce que quelqu'un a une idée?

Pourquoi ça marche pour le néerlandais (nl-NL) et pas pour le français (fr-FR)?

Répondre

2

Essayez d'utiliser "nl-BE" et "fr-BE". Ils utilisent le même formatage lorsqu'il s'agit de nombres.

String.Format("{0:##,###}", 12345); // nl-NL: 12.345 
String.Format("{0:##,###}", 12345); // fr-FR: 12 345 
String.Format("{0:##,###}", 12345); // nl-BE: 12.345 
String.Format("{0:##,###}", 12345); // fr-BE: 12.345 
1

Dans la 'Fr Culture', il n'y a pas de séparateur entre 1000 et 100. Donc, si vous écrivez 10.000 en néerlandais, vous pouvez écrire 10 000 en français .. Pourquoi est-ce un problème?

+0

merci Ban .... existe-t-il de la documentation ... qu'est-ce que c'est? Je veux dire que FR a un séparateur d'espace et NL a. séparateur ... Donc, je peux avoir un aperçu? – ethem

+0

http://en.wikipedia.org/wiki/Decimal_mark Ici vous pouvez voir une explication et au milieu de la page une liste de pays utilisant un espace, un point ou une virgule pour un séparateur .. C'est juste dû à l'histoire et aux habitudes . – bAN

1

C'est ainsi que les français dénotent des milliers. avec un espace. Les Hollandais utilisent un (arrêt complet), les Anglais utilisent un, (virgule). La mise en forme régionale fonctionne donc comme prévu.

0

Eh bien, il se comporte correctement. Le problème est que ce que vous avez réellement utilisé est un séparateur (en milliers). Si vous voulez qu'il soit toujours formaté avec un arrêt complet, ajoutez CultureInfo.InvariantCulture comme deuxième paramètre.

+0

Merci à tous. Tous sont utiles. Je ne savais pas que "un espace" était séparateur de mille pour le français. La question est: comment puis-je écrire par ex. le dbvalue 123456 comme 123.456 et 123.456 je veux dire quelqu'un peut-il donner un exemple de code? Je vois cultureinfo.invariantculture mais quelqu'un peut-il donner un échantillon? – ethem

Questions connexes