<asp:BoundField DataField="data"
HeaderText="Data" SortExpression="data"
DataFormatString="{0:d}" />
Perchè
questa riga di codice (ehm... markup) genera sempre la scritta "29/05/2005
0.00.00" come se facessa una banale ToString(), invece che "29/05/2005", cioè il risultato
di una String.Format con la stringa di formato {0:d} (cioè in formato Short
Date)?
All'inizio pensavo ad un errore nella stringa di
formato, ma consultando quella che è la mia bibbia delle stringhe di formato in C#
mi sono convinto che
l'errore non era mio: dopo qualche ricerca su Google ho trovato questo
interessante post su alcuni breaking changes apportati in ASP.NET
2.0.
Tra questi uno indica che ora è necessario applicare HtmlEncode="false" per poter ottenere
correttamente la formattazione: sembra che per qualche motivo il team di ASP.NET
ha deciso di applicare l'HtmlEncode prima di applicare il Format, rendendo
quindi inefficace la stinga di formato applicata.
La stringa corretta è quindi:
<asp:BoundField DataField="data"
HeaderText="Data" SortExpression="data"
DataFormatString="{0:d}" HtmlEncode="false" />
Questo si applica anche agli header delle colonne: se mettete HeaderText="Richiesta<br>Clip" ma non dite
ad ASP.NET di non HtmlEncodarlo non vedrete il ritorno a capo.
Bug o feature? Questo è il problema...
powered by IMHO 1.3