asp.net中打印指定控件内容

1.写一个PrintHelper类
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;
namespace PrintPage
{
 
    public class PrintHelper
    {
        public PrintHelper()
        { }
        public static void PrintWebControl(Control control)
        {
            PrintWebControl(control, string.Empty);
        }
        public static void PrintWebControl(Control control, string Script)
        {
            StringWriter stringWrite = new StringWriter();
            HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWrite);
            if (control is WebControl)
            {
                Unit w = new Unit(100, UnitType.Percentage);
                ((WebControl)control).Width = w;
            }
            Page pg = new Page();
            pg.EnableEventValidation = false;
            if (Script != string.Empty)
            {
                pg.ClientScript.RegisterStartupScript(pg.GetType(), "PrintJavaScipt", Script);
            }
            HtmlForm frm = new HtmlForm();
            pg.Controls.Add(frm);
            frm.Attributes.Add("runat", "server");
            frm.Controls.Add(control);
            pg.RenderControl(htmlWriter);
            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.创建Default页: 放置一个按钮btnPrint与一个Panel,Panel中是要打印的内容

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
namespace PrintPage
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void btnPrint_Click(object sender, EventArgs e)
        {
            Session["control"] = Panel1;
            ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Print.aspx','PrintMe','height=300px,width=300px,scrollbars=1');</script>");
        }
    }
}

创建Print页面: 在form_load事件中调用打印事件:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
namespace PrintPage
{
    public partial class Print : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Control control = (Control)Session["control"];
            PrintHelper.PrintWebControl(control);
        }
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏飞扬的花生

合并两个结构完全相同的DataTable

两个结构一模一样的DataTable如何合并? 例子:使用Winform进行演示,表2的数据为固定的,表1的数据可以动态添加,通过合并按钮合并表1和表2的数据到...

2095
来自专栏偏前端工程师的驿站

GridView实战二:使用ObjectDataSource数据源控件(自定义缓存机制实现Sort)

因为使用ObjectDataSource自带的缓存机制无法实现排序功能,苦苦寻觅终于找到了解决方案。参考后觉得还是自己实操一下比较安心,下面是对《GridVie...

17810
来自专栏跟着阿笨一起玩NET

C# 同步工作站与SQL服务器的时间,设置本机时间

本文转载:http://www.csframework.com/archive/2/arc-2-20130101-1971.htm

662
来自专栏菩提树下的杨过

db4o 7.4 for .net3.5试用手记

db4o虽然出来很久了,一直没怎么关注,今天随手试了下,对于小型应用还是不错的,至少省去了ORM的麻烦,一切皆对象,一切都变得那么自然。 下载地址:http:/...

2229
来自专栏blackheart的专栏

实用代码-C#获取本机网络适配器信息及MAC地址

System.Net.NetworkInformation空间提供对网络流量数据、网络地址信息和本地计算机的地址更改通知的访问。该命名空间还包含实现 Ping ...

2179
来自专栏腾讯Bugly的专栏

Android 7.0中ContentProvider实现原理

| 导语 本文描述了ContentProvider发布者和调用者这两在Framework层是如何实现的。 作为Android的四大组件之一,ContentPro...

4296
来自专栏跟着阿笨一起玩NET

JScriptHelper类

441
来自专栏kwcode

利用autocomplete.js实现仿搜索效果(ajax动态获取后端[C#]数据)

实现功能描述: 1、实现搜索框的智能提示 2、第二次浏览器缓存结果 3、实现仿百度搜索 <!DOCTYPE html> <html xmlns="http://...

5285
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:快速实现手机上常见的GridView

新建MobileForm项,命名为MessageShow2,并拖入一个Image控件和三个Label控件,如图1

1222
来自专栏汪毅雄的专栏

Android 7.0 中 ContentProvider 实现原理

本文描述了 ContentProvider 发布者和调用者这两在 Framework 层是如何实现的。

7442

扫码关注云+社区