?id=8d19e364-d780-41d9-89ad-dec8b5d339f5
Cómo enviar los resultados de un control Web a una cadena
por José M. Alarcón
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.
José Manuel Alarcón Aguín
Fundador de
campusMVP.es, el
proyecto de referencia en formación on-line para programadores en lengua española.
Autor de varios libros y cientos de artículos. Galardonado como
MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la
tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.