Reader Level:

Printing in ASP.NET

By Rahul Saxena on Aug 27, 2009
One of the most common functionality in any ASP.NET application is to print forms and controls. In this article I am going to show how we can achieve this print functionality in our application.

One of the most common functionality in any ASP.NET application is to print forms and controls.

In this article, I am going to show how can we achieve this print functionality in our application. For this, I created a PrintHelper class. In this class, I made a method 'PrintWebControl'. With this method we can print any server control alike GridView, DataGrid, Panel, TextBox etc.

This is my PrintHelper.cs


using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.IO;

using System.Text;

using System.Web.SessionState;


/// <summary>

/// Summary description for PrintHelper

/// </summary>

public class PrintHelper


    public PrintHelper()



        // TODO: Add constructor logic here



    public static void PrintWebControl(Control ctrl)


        PrintWebControl(ctrl, string.Empty);



    public static void PrintWebControl(Control ctrl, string Script)


        StringWriter stringWrite = new StringWriter();

        System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);

        if (ctrl is WebControl)


            Unit w = new Unit(100, UnitType.Percentage); ((WebControl)ctrl).Width = w;


        Page pg = new Page();

        pg.EnableEventValidation = false;

        if (Script != string.Empty)


            pg.ClientScript.RegisterStartupScript(pg.GetType(), "PrintJavaScript", Script);


        HtmlForm frm = new HtmlForm();


        frm.Attributes.Add("runat", "server");




        string strHTML = stringWrite.ToString();








Here, in this application, I created 2 pages. First is the default page of the content that I want to print.On the same page, I set a Print button also. When it will be clicked, it will redirect the user to the second page, named as 'Print.aspx'.


@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">

<html xmlns="">

<head runat="server">

    <title>Pring in ASP.NET</title>



    <form id="form1" runat="server">


            <asp:Button ID="btnPrint" runat="server" Text="Print" OnClick="btnPrint_Click" /><br />

            <asp:Panel ID="pnl1" runat="server">

                <table cellpadding="4" cellspacing="4" width="50%" align="center">


                        <td align="center">

                            Fill all information





                            <asp:Label ID="Label1" runat="server" Text="Email" Width="130px"></asp:Label>

                            <asp:TextBox runat="server"></asp:TextBox>





                            <asp:Label ID="Label2" runat="server" Text="Name" Width="130px"></asp:Label>

                            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>





                            <asp:Label ID="Label6" runat="server" Text="Country" Width="130px"></asp:Label>

                            <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>





                            <asp:Label ID="Label3" runat="server" Text="Mobile" Width="130px"></asp:Label>

                            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>










Image 1.

Click event of 'print' button is:

void btnPrint_Click(object sender, EventArgs e)


        Session["ctrl"] = pnl1;

        ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>'Print.aspx','PrintMe','height=300px,width=300px,scrollbars=1');</script>");


When, the 'Print' button is clicked,screen will be looking as under in the Image 2


Image 2.

Following is the load event of this page, 'Print.aspx':

void Page_Load(object sender, EventArgs e)


        Control ctrl = (Control)Session["ctrl"];






Rahul Saxena
Rahul Saxena

Rahul K Saxena is working as a Technical Analyst in Noida, India. He is Masters in Computers Application. Here in the IT industry for more than 6+ years and his main technical skills include SharePoint 2010, MOSS 2007, ... Read more



Spire.Doc - Free .NET Word API
Use Spire.Doc to create, read, write, print, and convert word documents to OpenXML, RTF, TXT, XPS, EPUB, EMF, HTML, Image and PDF.

Trending up

Infragistics jQuery Controls