如何在ASP.NET 2.0中列印
在這篇文章中,我們將探討如何在ASP.NET 2.0控制項列印。 我們將列印在一個快顯視窗控制,內部使用window.print()方法。 以前的列印中我們用過水晶報表的,和JS的,如果是大資料的,那麼多數人都會選擇水晶報表的,不過很麻煩,前幾天我用過JS的,不過有缺點,把我頁面上的內容都列印了,包括按鈕今天我給大家介紹 這個控制項(也可以說是一個類)是指定頁面地區列印的,希望能給大家帶來協助
步驟1: 建立一個PrintHelper類。 這個類包含一個名為PrintWebControl一個方法,它可以列印任何想控制一個GridView,DataGrid中,面板,文字框等類可以調用window.print(),類比列印按鈕。
註:我沒有寫過這個類和我也不知道原作者。 我會很樂意加入一個參考,以防有人知道
using System;<br />using System.Data;<br />using System.Configuration;<br />using System.Web;<br />using System.Web.Security;<br />using System.Web.UI;<br />using System.Web.UI.WebControls;<br />using System.Web.UI.WebControls.WebParts;<br />using System.Web.UI.HtmlControls;<br />using System.IO;<br />using System.Text;<br />using System.Web.SessionState; </p><p>namespace PrintPage<br />{<br /> public class PrintHelper<br /> {<br /> public PrintHelper()<br /> { } </p><p> public static void PrintWebControl(Control control)<br /> {<br /> PrintWebControl(control, string.Empty);<br /> } </p><p> public static void PrintWebControl(Control control, string Script)<br /> {<br /> StringWriter stringWrite = new StringWriter();<br /> HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWrite);<br /> if (control is WebControl)<br /> {<br /> Unit w = new Unit(100, UnitType.Percentage);<br /> ((WebControl)control).Width = w;<br /> }<br /> Page pg = new Page();<br /> pg.EnableEventValidation = false;<br /> if (Script != string.Empty)<br /> {<br /> pg.ClientScript.RegisterStartupScript(pg.GetType(), "PrintJavaScipt", Script);<br /> } </p><p> HtmlForm frm = new HtmlForm();<br /> pg.Controls.Add(frm);<br /> frm.Attributes.Add("runat", "server");<br /> frm.Controls.Add(control);<br /> pg.RenderControl(htmlWriter);<br /> string strHTML = stringWrite.ToString();<br /> HttpContext.Current.Response.Clear();<br /> HttpContext.Current.Response.Write(strHTML);<br /> HttpContext.Current.Response.Write("");<br /> HttpContext.Current.Response.End();<br /> }<br /> }<br />}
步驟2: 建立兩個頁面,Default.aspx和Print.aspx。
Default.aspx頁面將包含要列印的控制。 Print.aspx將作為一個彈出網頁調用列印功能。
第三步: 在你的Default.aspx,拖放幾個控制項,把你想要列印的內容和控制項都放到一個容器中(panel)。
這樣,我們就可以對這個容器列印了
第四步: 添加列印按鈕Default.aspx頁面代碼,鍵入以下內容:
protected void btnPrint_Click(object sender, EventArgs e)<br /> {<br /> Session["control"] = Panel1;<br /> ClientScript.RegisterStartupScript(this.GetType(), "onclick", "window.open('Print.aspx','PrintMe','height=300px,width=300px,scrollbars=1');");<br /> }
第五步: 在Print.aspx.cs Page_Load事件中,添加以下代碼:
<br /> protected void Page_Load(object sender, EventArgs e)<br /> {<br /> Control control = (Control)Session["control"];<br /> PrintHelper.PrintWebControl(control);<br /> }<br />
那麼就是這樣。 我希望這篇文章是有用的,我感謝你觀看它。
代碼下載:http://www.51ascx.com/183.html