+2 امتیاز
قبل در برنامه نویسی توسط (505 امتیاز)
برچسب گذاری دوباره قبل توسط
سلام

شما چطوری در asp.net از فرمتون پرینت می گیرید؟

من یه کد Javascript پیدا کردم ولی موقع پرینت یه دیالوگ باکسی میاد و از کاربر میخواد که نوع پرینترشو تعیین کنه و تعداد دفعاتی که میخواد پرینت بگیریه از اون صقحه.

من نمیخوام این باکس نمایش داده بشه ،اگر هم نمیشه ،لااقل قسمت تعداد دفعات پرینتش ،غیرفعال باشه که کاربر نتونه از یه فرم پند بار پرینت بگیره

1 پاسخ

–1 امتیاز
قبل توسط (3 امتیاز)
ویرایش شده قبل توسط

سلام، 1)در پوشه App_code یک کلاس با نام print.sc ایجاد کنید، سپس کدهای زیر را در آن کپی کنید:

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.Attributes.Add("dir", "rtl");
        frm.Style.Add(HtmlTextWriterStyle.FontSize, "12px");
        frm.Style.Add(HtmlTextWriterStyle.FontFamily , "Tahoma");
        frm.Style.Add(HtmlTextWriterStyle.Width , "21cm");
        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();
    }
}

2) صفحه مورد نظر، بخشی از فرم را که می خواهید کاربر آن را پرینت بگیرد در داخل یک panel قرار دهید و سپس در کد دکمه پرینت کد زیر را بنویسید:

Control ctrl = (Control)Panel1; PrintHelper.PrintWebControl(ctrl);

کد زیر مستفیم از صفحه پرینت می گیرد و print dialog box را نمایش نمی دهد.
باید تنظیم کنید که از فسمت خاصی از صفحه پرینت بگیرد.


<html>
<head>
<script language="JavaScript">
    DA = (document.all) ? 1 : 0

    function HandleError() {
        alert("\nNothing was printed. \n\nIf you do want to print this page, then\nclick on the printer icon in the toolbar above.")
        return true;
    }
</script>
</head>
<body>
<form>
<input type="button" value="Print Page" onClick="window.print();">
</form>

<script language="VBScript">

Sub window_onunload()
On Error Resume Next
Set WB = nothing
On Error Goto 0
End Sub

Sub Print()
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
OLECMDEXECOPT_PROMPTUSER = 1


On Error Resume Next

If DA Then
call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1)

Else
call WB.IOleCommandTarget.Exec(OLECMDID_PRINT ,OLECMDEXECOPT_DONTPROMPTUSER,"","","")

End If

If Err.Number <> 0 Then
If DA Then 
Alert("Nothing Printed :" & err.number & " : " & err.description)
Else
HandleError()
End if
End If
On Error Goto 0
End Sub

If DA Then
wbvers="8856F961-340A-11D0-A96B-00C04FD705A2"
Else
wbvers="EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B"
End If

document.write "<object ID=""WB"" WIDTH=0 HEIGHT=0 CLASSID=""CLSID:"
document.write wbvers & """> </object>"
</script>
</body>
</html>
قبل توسط (505 امتیاز)
من کد شمارو اجرا کردم ، فقط فونت صفحه را عوض کرده بود و استایل داده بود و
window.print(); را می نوشت
قبل توسط (1.1هزار امتیاز)
لطفا کدی که در قسمت نظر دادن آورده اید را در جواب خود قرار دهید.
قبل توسط (1.1هزار امتیاز)
من کد رو توی جواب ویرایش کردم.
قبل توسط (505 امتیاز)
منم کدی را که شما ویرایش کردید را تست کردم ولی همون جوابی را که در بالا گفتم داد.
ظاهرا راهی نیست که بشه این دیالوگ را غیرفعال کرد؛
قبل توسط (1.1هزار امتیاز)
لطفا کد داخل نظر قرار ندهید و در عوض جواب را ویرایش کنید. من کد جدید رو داخل جوابتون اضافه کردم.
قبل توسط (505 امتیاز)
کد جدید هم کار نکرد!

سوالات مشابه

+1 امتیاز
1 پاسخ 680 بازدید
0 امتیاز
1 پاسخ 495 بازدید
0 امتیاز
0 پاسخ 450 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط morteza (20 امتیاز)
0 امتیاز
0 پاسخ 436 بازدید
0 امتیاز
1 پاسخ 999 بازدید
0 امتیاز
1 پاسخ 1.8هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط morteza (20 امتیاز)
0 امتیاز
1 پاسخ 553 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط morteza (20 امتیاز)
0 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 484 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط hldv (760 امتیاز)
–1 امتیاز
1 پاسخ 828 بازدید
...