页面局部打印

今天遇到页面局部打印,经过一番努力,终于成了,分享一下。

  protected void Page_Load(object sender, EventArgs e)
        {
            //绑定数据
            this.GridView1.DataSource = 数据源;
            GridView1.DataBind();
            Label1.Text = DateTime.Now.ToShortDateString();
        }

        /// <summary>
        /// 打印方法
        /// </summary>
        /// <param name="control">控件ID</param>
        public static void PrintWebControl(Control control)
        {
            PrintWebControl(control, string.Empty);
        }

        /// <summary>
        /// 打印方法
        /// </summary>
        /// <param name="control">控件ID</param>
        /// <param name="Script"></param>
        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();
        }

        /// <summary>
        /// 打印按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnPrit_Click(object sender, EventArgs e)
        {
            PrintWebControl(this.Panel1);
        }

        /// <summary>
        /// 重载,否则出现“类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标... ”的错误
        /// </summary>
        /// <param name="control"></param>
        public override void VerifyRenderingInServerForm(Control control)
        {
            /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
               server control at run time. */
        }

如果报RegisterForEventValidation can only be called during Render()错误,请修改<%@ Page Language=”C#” AutoEventWireup=”true” EnableEventValidation=”false” CodeBehind=”AA.aspx.cs” Inherits=”AA” %>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值