نمایش نتایج 1 تا 36 از 36

نام تاپیک: پرینت گرفتن از هر قسمت صفحه که مایل باشید C#‎ & VB

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار bahar_engineer
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    657

    Lightbulb پرینت گرفتن از هر قسمت صفحه که مایل باشید C#‎ & VB

    برای اینکه بتونین از صفحاتتون پرینت بگیرین به روش زیر اقدام کنید

    در این روش از هر کنترلی که توی صفحه داشته باشید می تونین پرینت بگیرید مثل گریدویو ، عکس، جدول و هر چیز دیگه ای

    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','Prin tMe','height=300px,width=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','Prin tMe','height=300px,width=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

    تموم شد

    حالا اجرا کنید و پرینت بزنید

    امیدوارم مفید واقع بشه

    موفق باشید
    آخرین ویرایش به وسیله bahar_engineer : چهارشنبه 17 تیر 1388 در 14:16 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •