آموزش چگونگی Export سطرهای مورد نظر GridView به فایل pdf در ASP.Net با استفاده از #C و VB.Net
سه شنبه 18 شهریور 1393در این مقاله آموزش چگونگی Export سطرهای مورد نظر GridView به فایل pdf در ASP.Net بااستفاده از # Cو VB.Net را آموزش خواهیم داد. میخواهیم با استفاده از textbox سطرهای مورد نظر را انتخاب کنیم و بعد آن سطرهارا به pdf اکسپورت کنیم.
در این مقاله آموزش چگونگی Export سطرهای مورد نظر GridView به فایل pdf در ASP.Net بااستفاده از # Cو VB.Net را آموزش خواهیم داد.
میخواهیم با استفاده از textbox سطرهای مورد نظر را انتخاب کنیم و بعد آن سطرهارا به pdf اکسپورت کنیم.برای این کار باید GridView شامل یک ستون checkbox برای انتخاب سطرهای مورد نظر ما باشد.
Database
برای این مقاله از دیتابیس Northwind استفاده کردهام که شما می توانید از ادرس زیر برای دانلود و نصب دستورالعملهای ان استفاده کنید:
Install Microsoft Northwind and Pubs Sample databases in SQL Server Management Studio
کد Html
کد Html شامل GridView و یک Button است. اولین ستون یک TemplateField است که شامل یک Checkbox برای انتخاب سطرهای مورد نظر است.
<asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" RowStyle-BackColor="#A1DCF2" runat="server" AutoGenerateColumns="false"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="chkSelect" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="ContactName" HeaderText="Contact Name" ItemStyle-Width="150px" /> <asp:BoundField DataField="City" HeaderText="City" ItemStyle-Width="100px" /> <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="100px" /> </Columns> </asp:GridView> <br /> <asp:Button ID="btnExport" runat="server" Text="Export To PDF" OnClick="ExportToPDF" />
Namespaceها
باید این Namespace هارا اضافه کنید:
#C
using System.IO; using System.Data; using System.Data.SqlClient; using System.Configuration; using iTextSharp.text; using iTextSharp.text.html.simpleparser; using iTextSharp.text.pdf;
VB.Net
Imports System.IO Imports System.Data Imports System.Data.SqlClient Imports System.Configuration Imports iTextSharp.text Imports iTextSharp.text.html.simpleparser Imports iTextSharp.text.pdf
بایند کردن GridView
کدی که میبینید مربوط به بایند کردن GridView با رکوردهایی از جدول Customers د ر dartabase است.
#C
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.BindGrid(); } } private void BindGrid() { string strConnString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; using (SqlConnection con = new SqlConnection(strConnString)) { using (SqlCommand cmd = new SqlCommand("SELECT TOP 10 * FROM Customers")) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.Connection = con; sda.SelectCommand = cmd; using (DataTable dt = new DataTable()) { sda.Fill(dt); GridView1.DataSource = dt; GridView1.DataBind(); } } } } }
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then Me.BindGrid() End If End Sub Private Sub BindGrid() Dim strConnString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString Using con As New SqlConnection(strConnString) Using cmd As New SqlCommand("SELECT TOP 10 * FROM Customers") Using sda As New SqlDataAdapter() cmd.Connection = con sda.SelectCommand = cmd Using dt As New DataTable() sda.Fill(dt) GridView1.DataSource = dt GridView1.DataBind() End Using End Using End Using End Using End Sub
Export سطرهای مورد نظر GridView به فایل pdf در ASP.Net
در زیر کدهای مورد نظر را میبینید
ابتدا روی سطرهای GridView یک حلقه میزنیم تا مشخص کنیم checkbox کدام سطر تیک زده نشده است،در این صورت visible آن false میشود.
در آخر GridView با استفاده از HtmlTextWriter به رشتهٔ html ترجمه می شود و سپس HTML ایجاد شده به iTextSharp در فایل pdf اضافه می شود که بعد از آن ، درطول جریان درخواست ، به pdf اکسپورت می شود.
#C
protected void ExportToPDF(object sender, EventArgs e) { using (StringWriter sw = new StringWriter()) { using (HtmlTextWriter hw = new HtmlTextWriter(sw)) { //Hide the Column containing CheckBox GridView1.Columns[0].Visible = false; foreach (GridViewRow row in GridView1.Rows) { if (row.RowType == DataControlRowType.DataRow) { //Hide the Row if CheckBox is not checked row.Visible = (row.FindControl("chkSelect") as CheckBox).Checked; } } GridView1.RenderControl(hw); StringReader sr = new StringReader(sw.ToString()); Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f); HTMLWorker htmlparser = new HTMLWorker(pdfDoc); PdfWriter.GetInstance(pdfDoc, Response.OutputStream); pdfDoc.Open(); htmlparser.Parse(sr); pdfDoc.Close(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf"); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Write(pdfDoc); Response.End(); } } } public override void VerifyRenderingInServerForm(Control control) { /* Verifies that the control is rendered */ }
VB.Net
Protected Sub ExportToPDF(sender As Object, e As EventArgs) Using sw As New StringWriter() Using hw As New HtmlTextWriter(sw) 'Hide the Column containing CheckBox GridView1.Columns(0).Visible = False For Each row As GridViewRow In GridView1.Rows If row.RowType = DataControlRowType.DataRow Then 'Hide the Row if CheckBox is not checked row.Visible = TryCast(row.FindControl("chkSelect"), CheckBox).Checked End If Next GridView1.RenderControl(hw) Dim sr As New StringReader(sw.ToString()) Dim pdfDoc As New Document(PageSize.A4, 10.0F, 10.0F, 10.0F, 0.0F) Dim htmlparser As New HTMLWorker(pdfDoc) PdfWriter.GetInstance(pdfDoc, Response.OutputStream) pdfDoc.Open() htmlparser.Parse(sr) pdfDoc.Close() Response.ContentType = "application/pdf" Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf") Response.Cache.SetCacheability(HttpCacheability.NoCache) Response.Write(pdfDoc) Response.[End]() End Using End Using End Sub Public Overrides Sub VerifyRenderingInServerForm(control As Control) ' Verifies that the control is rendered End Sub
- ASP.net
- 2k بازدید
- 10 تشکر