RSS 2.0 Atom 1.0 CDF  
JASoft.org - Cómo enviar los resultados de un control Web a una cadena
El blog de José Manuel Alarcón Aguín. Programación .NET y mucho más...
 

Típica situación: tengo un GridView con datos y quiero guardarlos en un archivo HTML (o más bien enviárselos al usuario como un archivo .htm) o enviarlos por correo.

El control está dentro de una página con otros controles que están más o menos relacionados con éste, por ejemplo para pasarle parámetros y filtrar.

Lo típico que hace todo el mundo es pasar los mismos parámetros a otra página, lanzar la misma consulta a la base de datos y luego generar el HTML con un StringBuilder (con suerte) y mucha paciencia.

¿Existe una forma mejor?

Of course :-)

La idea es sencilla: obtienes una referencia al control en cuestión (en una página simplemente uisas su nombre, por ejemplo GridView1) y usas un HtmlTextWriter para llamar a su método Render o RenderControl (de la clase base Control) y así obtener el resultado de su visualización.

Por ejemplo:

StringWriter sw = new StringWriter(); 
HtmlTextWriter htw = new HtmlTextWriter(sw); 
GridView1.Render(htw); 
Response.Write(htw.ToString());

Obviamente para enviar el resultado al cliente habría que meter antes un encabezado con el tipo de archivo (text/html) y si queremos que se visualice u ofrezca la posibilidad de guardarlo a disco, pero eso es tema para otro post :-)

Este resultado lo puedes guardar en un archvio o en una BD, enviarlo por e-mail, etc... Es muy útil.

Wednesday, October 03, 2007 9:45:09 PM (Hora de verano romance, UTC+02:00)  #    Comments [0]   ASP.NET  |  Trackback Tracked by:
"GridView con datos y quiero guardarlos en un archivo HTML" (joseblanco.es) [Trackback]
Name
E-mail
Home page

Comment (Some html is allowed: a@href@title, b, i, strike, strong, u) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Enter the code shown (prevents robots):

Live Comment Preview
Copyright © 2009 José Manuel Alarcón Aguín. All rights reserved.