Muitas vezes queremos formatar os valores vindos da fonte de dados antes de exibí-los nas colunas do controle GridView. Como já sabemos, basta aplicarmos o padrão que já conhecemos na propriedade DataFormatString, como por exemplo: {0:dd/MM/yyyy} que isso é aplicado ao valor da coluna e, consequentemente, exibida da forma como esperamos.
Neste momento, apresento uma nova propriedade (também da classe BoundField) chamada de HtmlEncode que, quando definida como True, o valor da coluna é codificado antes de ser exibido, para evitar assim, problemas com o XSS (Cross Site Scripting) e algum possível código malicioso.
O problema é que quando o valor da propriedade HtmlEncode está definido como True (é o default), a formatação não é aplicada, assim como podemos ver diretamente na documentação:
“When the HtmlEncode property is true, the value of the field is HTML encoded to its string representation before the formatting string is applied. For some objects, such as dates, you might want to control how the object is displayed with a formatting string. In those cases, you must set the HtmlEncode property to false.”
Com isso, quando os tipos de dados são datas ou valores monetários e precisa aplicar uma formtação na propriedade DataFormatString, voce deve definir a propriedade HtmlEncode para False para que consiga chegar ao resultado desejado.