Attribut DataFormatString pas pris en compte dans un BoundField
Par Wookai le mercredi 23 juillet 2008, 10:32 - Code - Lien permanent
Dans un GridView, on a la possibilité de formater le contenu d'un BoundField avec un pattern équivalent à ceux utilisés par String.Format(). C'est donc ce que j'ai voulu faire, en formatant une de mes colonnes contenant un prix pour qu'elle s'affiche joliment, avec un séparateur des milliers et la monnaie :
<asp:BoundField DataField="Price" DataFormatString="CHF {0:0,0}" SortExpression="Price" />
Mais le problème, c'est que ça ne fonctionne pas : le "CHF" est bien affiché, mais aucun séparateur des milliers ! Cela vient du fait que pour éviter l'injection de code, ASP.Net encode en HTML tous les champs avant de les afficher, et avant de les formatter ! Je ne sais pas pourquoi, mais cela semble le rendre incapable de séparer les milliers. Pour résoudre le problème, il suffit donc de désactiver l'encodage HTML de ce champ, si vous êtes sûr de ne rien risquer (dans mon cas, c'est un int qui vient directement de ma base de données, peu de risques d'injection donc ;-)...), en ajoutant l'attribut HtmlEncode="false" :
<asp:BoundField DataField="Price" DataFormatString="CHF {0:0,0}" HtmlEncode="false" SortExpression="Price" />
Commentaires
That involves a lot of work and time to accomplish the thesis title close to this good topic, thence, we choose to determine the <a href="http://www.exclusivethesis.com">dissertation</a> service to have the good grade.