Cómo enviar los resultados de un control Web a una cadena

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.

Sin categoría

5 thoughts on “Cómo enviar los resultados de un control Web a una cadena

  1. este es util, creanme, es muchos casos los usuarios quieren tener los resultados en archivos. aunque claro hay otras formas como exportarlas a excel, pero html tambien es bueno. como un archivo plano.

  2. Bueno, en realidad con esta técnica podrías exportar a Excel también puesto que si a una tabla HTML (resultado del GridView) le pones extensión .xls y ajustas adecuadamente la cabecera (el tipo MIME)para enviar el archivo, se recibe como una Excel perfectamente.

    Saludos

    JM.

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *