bahar_engineer
چهارشنبه 17 تیر 1388, 11:01 صبح
برای اینکه بتونین از صفحاتتون پرینت بگیرین به روش زیر اقدام کنید
در این روش از هر کنترلی که توی صفحه داشته باشید می تونین پرینت بگیرید مثل گریدویو ، عکس، جدول و هر چیز دیگه ای
1. یک کلاس به وب سایتتون اضافه کنین و نام اون رو PrintHelper بگذارید
کد زیر رو در اون بنویسید:
C#
--------------
using System;
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;
public class PrintHelper
{
public PrintHelper()
{
}
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();
pg.Controls.Add(frm);
frm.Attributes.Add("runat", "server");
frm.Controls.Add(ctrl);
pg.DesignerInitialize();
pg.RenderControl(htmlWrite);
string strHTML = stringWrite.ToString();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Write(strHTML);
HttpContext.Current.Response.Write("<script>window.print();</script>");
HttpContext.Current.Response.End();
}
}
VB.NET
--------------
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
2. دو صفحه بسازید default.aspx و print.aspx (این صفحه default همون صفحه ای هست که می خواین اطلاعاتشو پرینت بگیرین و صفحه print هم یه صفحه popup هست که حالت preview رو داره)
3. داخل صفحه default.aspx یک پنل قرار بدین (از toolbar یک panel درگ کنید توی صفحه) و هر کنترل یا جدول یا گریدویو ، عکس و هر چیز دیگه ای رو که می خواین ازش پرینت داشته باشین رو توی اون پنل جاسازی و مرتب کنید(دقت کنید تمامی کنترلها و متنهایی که توی پنل قرار می دین پرینت گرفته می شن به همون شکل که شما قرار دادید)
4. در صفحه default یک دکمه برای پرینت قرار بدین و نامش رو هم مثلاً پرینت اطلاعات بگذارید و سپس در رویداد کلیک اون کد زیر رو بنویسید:
C#
--------
protected void btnPrint_Click(object sender, EventArgs e)
{
Session["ctrl"] = Panel1;
ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Print.aspx','PrintMe','height=300px,w idth=300px,scrollbars=1');</script>");
}
VB.NET
----------
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,w idth=300px,scrollbars=1');</script>")
End Sub
این کد اطلاعات مورد نظر رو در سشن ذخیره می کنه و به پنجره POPUP می فرسته و بعد پرینت می گیره ... اگر می خواین مستقیماً پرینت بگیره به جای کدهای بالا این کد رو بنویسید:
PrintHelper.PrintWebControl(Panel1);
5. در رویداد page_load صفحه print.aspx کد زیر رو اضافه کنین:
C#
------------
protected void Page_Load(object sender, EventArgs e)
{
Control ctrl = (Control)Session["ctrl"];
PrintHelper.PrintWebControl(ctrl);
}
VB.NET
-------
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
تموم شد:لبخندساده:
حالا اجرا کنید و پرینت بزنید
امیدوارم مفید واقع بشه
موفق باشید:چشمک:
در این روش از هر کنترلی که توی صفحه داشته باشید می تونین پرینت بگیرید مثل گریدویو ، عکس، جدول و هر چیز دیگه ای
1. یک کلاس به وب سایتتون اضافه کنین و نام اون رو PrintHelper بگذارید
کد زیر رو در اون بنویسید:
C#
--------------
using System;
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;
public class PrintHelper
{
public PrintHelper()
{
}
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();
pg.Controls.Add(frm);
frm.Attributes.Add("runat", "server");
frm.Controls.Add(ctrl);
pg.DesignerInitialize();
pg.RenderControl(htmlWrite);
string strHTML = stringWrite.ToString();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Write(strHTML);
HttpContext.Current.Response.Write("<script>window.print();</script>");
HttpContext.Current.Response.End();
}
}
VB.NET
--------------
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
2. دو صفحه بسازید default.aspx و print.aspx (این صفحه default همون صفحه ای هست که می خواین اطلاعاتشو پرینت بگیرین و صفحه print هم یه صفحه popup هست که حالت preview رو داره)
3. داخل صفحه default.aspx یک پنل قرار بدین (از toolbar یک panel درگ کنید توی صفحه) و هر کنترل یا جدول یا گریدویو ، عکس و هر چیز دیگه ای رو که می خواین ازش پرینت داشته باشین رو توی اون پنل جاسازی و مرتب کنید(دقت کنید تمامی کنترلها و متنهایی که توی پنل قرار می دین پرینت گرفته می شن به همون شکل که شما قرار دادید)
4. در صفحه default یک دکمه برای پرینت قرار بدین و نامش رو هم مثلاً پرینت اطلاعات بگذارید و سپس در رویداد کلیک اون کد زیر رو بنویسید:
C#
--------
protected void btnPrint_Click(object sender, EventArgs e)
{
Session["ctrl"] = Panel1;
ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Print.aspx','PrintMe','height=300px,w idth=300px,scrollbars=1');</script>");
}
VB.NET
----------
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,w idth=300px,scrollbars=1');</script>")
End Sub
این کد اطلاعات مورد نظر رو در سشن ذخیره می کنه و به پنجره POPUP می فرسته و بعد پرینت می گیره ... اگر می خواین مستقیماً پرینت بگیره به جای کدهای بالا این کد رو بنویسید:
PrintHelper.PrintWebControl(Panel1);
5. در رویداد page_load صفحه print.aspx کد زیر رو اضافه کنین:
C#
------------
protected void Page_Load(object sender, EventArgs e)
{
Control ctrl = (Control)Session["ctrl"];
PrintHelper.PrintWebControl(ctrl);
}
VB.NET
-------
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
تموم شد:لبخندساده:
حالا اجرا کنید و پرینت بزنید
امیدوارم مفید واقع بشه
موفق باشید:چشمک: