Recientemente instal茅 el nuevo Service Pack 1 para .NET 2.0 (y .NET 3.5) en un servidor de producci贸n. De repente la aplicaci贸n empez贸 a producir resultados inexplicables en unas rejillas de la aplicaci贸n de un cliente. De hecho desaparec铆an multitud de registros de 茅stas, aunque las consultas de las que depend铆an se segu铆an realizando sin problemas. Era un problema bastante raro y pensamos en un bug del SP1.

El caso es que fu茅 una combinaci贸n de un error nuestro y un cambio de comportamiento en el SP1 de .NET 2.0. Lo explico porque puede interesarle a bastante gente.

De hecho este problema tiene mucho que ver con otro que ya ocment茅 en este blog hace unos meses sobre el formato de fechas en los campos enlazados de una rejilla. En ese post adem谩s mostraba el c贸digo fuente de .NET que involucraba a este problema.

En el SP1 han cambiado ligeramente el comportamiento del enlazado a datos de campos DataBound en rejillas.

El caso es que el programador de nuestra aplicaic贸n hab铆a puesto en la rejilla un formato err贸neo en dos campos almacenados como cadenas en la BD, colocando esto en la propiedad DataFormatString:

"{0:d}"

Esto es un formato no v谩lido para un dato de tipo String, que es lo que se guarda en la base de datos. El formato 鈥淒鈥 usado aqu铆 es s贸lo aplicable a Enteros (lo pone bien claro la documentaci贸n de .NET), y el correcto ser铆a por ejemplo 鈥淔鈥. Por lo tanto el problema se solucionaba cambiando la cadena de formato de la rejilla a, por ejemplo:

"{0:F2}"

De este modo se formatea como un n煤mero decimal en coma flotante con dos decimales, que es lo que nos interesaba.

En la versi贸n anterior previa al SP1, de hecho no se estaba aplicando el formato en absoluto y por eso no romp铆a (consulta el c贸digo del post relacionado que menciono arriba) ya que la propiedad HtmlEncode es true por defecto. En el SP1 han cambiado este c贸digo y ahora s铆 que se aplica antes del formato de cadena.

De hecho han introducido una propiedad nueva llamada HtmlEncodeFormatString que por defecto vale true y que nos ayuda a controlar este aspecto.

Espero que esto le pueda ayudar a m谩s gente.

Saludos

JM.

💪🏻 驴Este post te ha ayudado?, 驴has aprendido algo nuevo?
Pues NO te pido que me invites a un caf茅... Te pido algo m谩s f谩cil y mucho mejor