28 febrero 2007

Bug en IE 6 sp2 y IE 7

El viernes pasado se me ocurrió probar el sistema que estoy desarrollando (C# - ASP.NET - DB4o) en IE7 y poco grata fue la sorpresa al encontrarme con un problema el los gridview, especificamente en los commandfields que tenía implementado. El problema que se generaba era que me arrojaba el error de acceso a la base de datos, indicandome que no tenia permisos de lectura-escritura. Lo más curioso es que cuando almacenaba datos en la BD la operación se realizaba sin problema alguno, por lo cual deduje que no era problema de permisos.

Realizando un par de pruebas, se me ocurrió cambiar el tipo del boton de los commandfield, los cambie de tipo Image a tipo Link y para mi sorpresa funcionaron perfecto!!! no lo podía creer. Comencé a buscar info en el tio google y encontré un post en un foro donde comentaban que es un bug del IE6 con sp2 y del IE7 ya que al hacer clic en el commandfield tipo Image se genera un doble postback. La solución artesanal de momento es agregar el siguiente código en los eventos de los commandfield:

if (Request["x"] == null || Request["y"] == null)
{
Response.End();
}

Lo he probado y funciona perfecto.

La otra solución es la que me comentó mi amigo Gisbert, he aqui la solución en sus palabras:

...Victor te recomiendo usar una columna template y ahi hagas magia jajaja, de la siguiente manera:

En la columna template agregas un ImageButton asi ya tienes tu boton con imagen y en el commandName guardas algun codigo con el que identificas al registro con el que deseas hacer algo, haciendo referencia a la propiedad del objeto que sacas del yap.

Espero que este pequeño aporte sea de su utilidad para que así no pierdan valiosas horas de programación en tratar de solucionar un bug de kill bill :)

Gracias Gisbert por tu valioso aporte.


Salu2!!!

PD: Más información y códigos aqui.

1 comentario:

Anónimo dijo...

Gracias por la información Victor :)
Si es q estos de Microsoft...

Necesito una ayuda al respecto. He preguntado en el foro de DB4O, a ver si alguno teneis unos minutos y podeis mirarlo :)

Gracias otra vez