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