DataFormatString non viene applicato ai BoundField

<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

«aprile»
domlunmarmergiovensab
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456