Step 1: Create a PrintHelper class. This class contains a method called PrintWebControl that can print any control like a GridView, DataGrid, Panel, TextBox etc. The class makes a call to window.print() that simulates the print button.
Imports System Imports System.Data Imports System.Configuration Imports System.Web Imports System.Web.Security Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Imports System.Web.UI.HtmlControls Imports System.IO Imports System.Text Imports System.Web.SessionState Public Class PrintHelper Public Sub New() End Sub Public Shared Sub PrintWebControl(ByVal ctrl As Control) PrintWebControl(ctrl, String.Empty) End Sub Public Shared Sub PrintWebControl(ByVal ctrl As Control, ByVal Script As String) Dim stringWrite As StringWriter = New StringWriter() Dim htmlWrite As System.Web.UI.HtmlTextWriter = New System.Web.UI.HtmlTextWriter(stringWrite) If TypeOf ctrl Is WebControl Then Dim w As Unit = New Unit(100, UnitType.Percentage) CType(ctrl, WebControl).Width = w End If Dim pg As Page = New Page() pg.EnableEventValidation = False If Script <> String.Empty Then pg.ClientScript.RegisterStartupScript(pg.GetType(), "PrintJavaScript", Script) End If Dim frm As HtmlForm = New HtmlForm() pg.Controls.Add(frm) frm.Attributes.Add("runat", "server") frm.Controls.Add(ctrl) pg.DesignerInitialize() pg.RenderControl(htmlWrite) Dim strHTML As String = stringWrite.ToString() HttpContext.Current.Response.Clear() HttpContext.Current.Response.Write(strHTML) HttpContext.Current.Response.Write("<script>window.print();</script>") HttpContext.Current.Response.End() End Sub End Class
Step 2: Create two pages, Default.aspx and Print.aspx. Default.aspx will contain the controls to be printed. Print.aspx will act as a popup page to invoke the print functionality. Step 3: In your Default.aspx, drag and drop a few controls that you would like to print. To print a group of controls, place them all in a container control like a panel. This way if we print the panel using our PrintHelper class, all the controls inside the panel gets printed. Step 4: Add a print button to the Default.aspx and in the code behind, type the following code:
Protected Sub btnPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrint.Click Session("ctrl") = Panel1 ClientScript.RegisterStartupScript(Me.GetType(), "onclick", "<script language=javascript>window.open('Print.aspx','PrintMe','height=300px,width=300px,scrollbars=1');</script>") End Sub
The code stores the control in a Session variable to be accessed in the pop up page, Print.aspx. If you want to print directly on button click, call the Print functionality in the following manner : PrintHelper.PrintWebControl(Panel1);
Step 5: In the Page_Load event of Print.aspx.cs, add the following code:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim ctrl As Control = CType(Session("ctrl"), Control) PrintHelper.PrintWebControl(ctrl) End Sub
|
No responses found. Be the first to respond and make money from revenue sharing program.
|