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.
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.
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.
pues claro el codigo html es interpretado por la suite de office(word, excel) pero no funca si lo quieres guardar como pdf.
Si es muy util pero como por ejm si quiero obtener los datos de un gridview(una fila) a unos textbox como se puede hacer
una pregunta como le hago si ya tengo el libro de excel creado por codigo ??
porque aqui lo hace con un data grid 🙁