توضیحات و دانلود

خروجی GridView به PDF با فیلد سفارشی با استفاده از iTextSharp در ASP.Net
0 0
خروجی GridView به PDF با فیلد سفارشی با استفاده از iTextSharp در ASP.Net

با سلام در این مقاله می توانیم جداول را با استفاده از کتابخانه ITextSharp ایجاد کنیم و ستون عرض و ارتفاع  مورد نیاز خود را مشخص کنیم. بنابراین ما می توانیم یک جدول ITextSharp با  تعداد ردیف ها و ستون ها را در GridView ایجاد و عرض ستون را برای آن جدول ITextSharp مشخص کنیم. که در این روش عرض ستون سفارشی که مشخص می کنیم در PDF ساخته شده نادیده گرفته نمی شود.

فضاهای نام

ما برای اجرای این پروژه به فضاهای نامی زیر نیاز داریم

C #

using System.Data;

using System.Data.SqlClient;

using System.IO;

using iTextSharp.text;

using iTextSharp.text.pdf;

using iTextSharp.text.html;

using iTextSharp.text.html.simpleparser;

using System.Text;

VB.Net

Imports System.Data

Imports System.Data.SqlClient

Imports System.IO

Imports iTextSharp.text

Imports iTextSharp.text.pdf

Imports iTextSharp.text.html

Imports iTextSharp.text.html.simpleparser

Imports System.Text

طرح Front End

در  GridView یک دکمه برای خروج و RadioButtonList قرار داده ایم تا کاربر بتواند صفحه فعلی به PDF یا تمام صفحات ایجاد شده را انتخاب کند

<asp:GridView ID="GridView1" runat="server"

    AutoGenerateColumns = "false" Font-Names = "Arial"

    Font-Size = "11pt" AlternatingRowStyle-BackColor = "#C2D69B" 

    HeaderStyle-BackColor = "green" AllowPaging ="true"  

    OnPageIndexChanging = "OnPaging" >

   <Columns>

    <asp:BoundField ItemStyle-Width = "200px"

         DataField = "CustomerID" HeaderText = "CustomerID" />

    <asp:BoundField ItemStyle-Width = "100px"

         DataField = "City" HeaderText = "City"/>

    <asp:BoundField ItemStyle-Width = "50px"

         DataField = "Country" HeaderText = "Country"/>

   </Columns>

</asp:GridView>

اتصال GridView

برای این مطلب از پایگاه NorthWind استفاده می کنیم که ازاینجا می توان دانلود کرد

GridView را با استفاده از کد زیر در بارگذاری صفحه مرتبط میکنم. متوجه خواهید شد که عرض های مختلف را به ستون GridView تنظیم کرده اید

C #

protected void Page_Load(object sender, EventArgs e)

{

    String strConnString = ConfigurationManager

        .ConnectionStrings["conString"].ConnectionString;

    SqlConnection con = new SqlConnection(strConnString);

    SqlCommand cmd = new SqlCommand();

    SqlDataAdapter sda = new SqlDataAdapter();

    DataSet ds = new DataSet();

    cmd.CommandType = CommandType.Text;

    cmd.CommandText = "select CustomerID,City,Country from customers";

    cmd.Connection = con;

    sda.SelectCommand = cmd;

    try

    {

        con.Open();

        sda.Fill(ds);

        GridView1.EmptyDataText = "No Records Found";

        GridView1.DataSource = ds;

        GridView1.DataBind();

    }

    catch (Exception ex)

    {

        throw ex;

    }

    finally

    {

        con.Close();

        con.Dispose();

    }

}

VB.Net

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

  Dim strConnString As String = ConfigurationManager _

     .ConnectionStrings("conString").ConnectionString

  Dim con As New SqlConnection(strConnString)

  Dim cmd As New SqlCommand()

  Dim sda As New SqlDataAdapter()

  Dim ds As New DataSet()

  cmd.CommandType = CommandType.Text

  cmd.CommandText = "select CustomerID,City,Country from customers"

  cmd.Connection = con

  sda.SelectCommand = cmd

  Try

     con.Open()

     sda.Fill(ds)

     GridView1.EmptyDataText = "No Records Found"

     GridView1.DataSource = ds

     GridView1.DataBind()

  Catch ex As Exception

     Throw ex

  Finally

     con.Close()

     con.Dispose()

  End Try

End Sub

وقتی برنامه را اجرا میکنید خروجی زیر را می ببینید


حالا ما باید کد را  دکمه خروج بنویسیم که در زیر نشان داده شده است

C #

protected void btnExportPDF_Click(object sender, EventArgs e)

{

    GridView1.AllowPaging = Convert.ToBoolean(rbPaging.SelectedItem.Value);

    GridView1.DataBind();

 

     //Create a table

    iTextSharp.text.Table table = new iTextSharp.text

                 .Table(GridView1.Columns.Count);

    table.Cellpadding = 5;

 

    //Set the column widths

    int[] widths = new int[GridView1.Columns.Count];

    for (int x = 0; x < GridView1.Columns.Count; x++)

    {

        widths[x] = (int)GridView1.Columns[x].ItemStyle.Width.Value ;

        string cellText = Server.HtmlDecode(GridView1.HeaderRow.Cells[x].Text);

        iTextSharp.text.Cell cell = new iTextSharp.text.Cell(cellText);

        cell.BackgroundColor = new Color (System

                           .Drawing.ColorTranslator.FromHtml("#008000"));

        table.AddCell(cell);

    }

    table.SetWidths(widths);

 

    //Transfer rows from GridView to table

    for (int i = 0; i < GridView1.Rows.Count; i++)

    {

        if (GridView1.Rows[i].RowType == DataControlRowType.DataRow)

        {

            for (int j = 0; j < GridView1.Columns.Count; j++)

            {

                string cellText = Server.HtmlDecode

                                  (GridView1.Rows[i].Cells[j].Text);

                iTextSharp.text.Cell cell = new iTextSharp.text.Cell(cellText);

 

                //Set Color of Alternating row

                if (i % 2 != 0)

                {

                    cell.BackgroundColor = new Color(System.Drawing

                                        .ColorTranslator.FromHtml("#C2D69B"));

                }

                table.AddCell(cell);

            }

        }

    }

 

    //Create the PDF Document

    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);

    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

    pdfDoc.Open();

    pdfDoc.Add(table);

    pdfDoc.Close(); 

    Response.ContentType = "application/pdf";

    Response.AddHeader("content-disposition", "attachment;" +

                                   "filename=GridViewExport.pdf");

    Response.Cache.SetCacheability(HttpCacheability.NoCache);

    Response.Write(pdfDoc);

    Response.End();

}

VB.Net

Protected Sub btnExportPDF_Click(ByVal sender As Object, ByVal e As EventArgs)

 GridView1.AllowPaging = Convert.ToBoolean(rbPaging.SelectedItem.Value)

 GridView1.DataBind()

 

 'Create a table

 Dim table As New iTextSharp.text.Table(GridView1.Columns.Count)

 table.Cellpadding = 5

 

 'Set the column widths

 Dim widths As Integer() = New Integer(GridView1.Columns.Count - 1) {}

 For x As Integer = 0 To GridView1.Columns.Count - 1

   widths(x) = CInt(GridView1.Columns(x).ItemStyle.Width.Value)

   Dim cellText As String = _

      Server.HtmlDecode(GridView1.HeaderRow.Cells(x).Text)

   Dim cell As New iTextSharp.text.Cell(cellText)

   cell.BackgroundColor = _

     New Color(System.Drawing.ColorTranslator.FromHtml("#008000"))

   table.AddCell(cell)

 Next

 table.SetWidths(widths)

 

 'Transfer rows from GridView to table

 For i As Integer = 0 To GridView1.Rows.Count - 1

    If GridView1.Rows(i).RowType = DataControlRowType.DataRow Then

       For j As Integer = 0 To GridView1.Columns.Count - 1

         Dim cellText As String = _

            Server.HtmlDecode(GridView1.Rows(i).Cells(j).Text)

         Dim cell As New iTextSharp.text.Cell(cellText)

 

         'Set Color of Alternating row

         If i Mod 2 <> 0 Then

           cell.BackgroundColor = _

             New Color(System.Drawing.ColorTranslator.FromHtml("#C2D69B"))

         End If

         table.AddCell(cell)

       Next

    End If

 Next

 'Create the PDF Document

 Dim pdfDoc As New Document(PageSize.A4, 10.0F, 10.0F, 10.0F, 0.0F)

 PdfWriter.GetInstance(pdfDoc, Response.OutputStream)

 pdfDoc.Open()

 pdfDoc.Add(table)

 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 Sub

همانطور که قبلا متوجه شدید، از طریق GridView از حلقه ها و ایجاد سلول ها در جدول iTextSharp با استفاده از مقادیر سلول های GridView استفاده می کنم. در نهایت، اضافه کردن جدول به  سند PDF است که سپس از طریق جریان پاسخ ایجاد شده است. شکل زیر سند PDF ایجاد شده را با ستون سفارشی مشابه آنچه که در GridView Control مشخص شده است نمایش می دهد.

همچنین برای جلوگیری از خطا زیر باید این رویداد را اضافه کنید

کنترل 'GridView1' از نوع 'GridView' باید داخل یک تگ فرم با runat = server قرار گیرد.

 

C #

public override void VerifyRenderingInServerForm(Control control)

{

        /* Verifies that the control is rendered */

}

VB.Net

Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)

        ' Verifies that the control is rendered

End Sub

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :