Lo seleccionamos y pulsamos Aceptar.
Ahora en nuestra hoja agregamos una tabla de 2 filas y una columna, en la primera fila agregamos un control ImageButton y en el segundo agregamos un GridView. A nuestro ImageButton le vamos a dar de fondo una imagen PDF para que se vea mas amigable para el usuario, luciendo asi:
para darle este fondo vana la propiedad imageUrl y seleccionan la imagen que debe estar dentro de su proyecto. A nuestro GridView en las propiedades AllowPaging y AllowSorting las ponemos en true y AutoGenerateColumns lo ponemos en false.
Ahora agregamos un SQLDataSource debajo de nuestro gridview:
Configuramos origen de datos y para este ejemplo utilizaremos los campos CompanyName, ContactName, ContactTitle y Address de la tabla Suppliers de la Base Northwind. Pueden hacer select * desde el DataSource, enlazamos al gridview en la propiedad DataSourceID y luego eliminamos las columnas que no deseamos:
Editamos nuestra cadena de conexion del Web.config
ahora a nuestra ventana de codigo agregamos estas referencias:
using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; using iTextSharp.text.html.simpleparser;
y agregan este codigo debajo del load:
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=UserDetails.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
hw.Write("<b><u>Employee Information</u></b><br/> <br/>");
GridView1.AllowPaging = false;
GridView1.DataBind();
GridView1.RenderControl(hw);
GridView1.HeaderRow.Style.Add("width", "15%");
GridView1.HeaderRow.Style.Add("font-size", "10px");
GridView1.Style.Add("text-decoration", "none");
GridView1.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
GridView1.Style.Add("font-size", "8px");
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 18f, 18f, 18f, 18f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
}para este ejemplo descargue el itextsharp.dll la version 4.1.2.0. Se agrego la funcion VerifyRenderingInServerForm para evitar que aparezca este error RegisterForEventValidation can only be called during Render();. Espero les haya servido el codigo.






0 comentarios:
Publicar un comentario