找回密码
 立即注册

QQ登录

只需一步,快速开始

mamazi

论坛元老

6

主题

22

帖子

4274

积分

论坛元老

积分
4274

活字格认证

mamazi
论坛元老   /  发表于:2013-5-29 10:18  /   查看:6258  /  回复:3
环境:VS2010 C# .NET 页面是ASP的
用ActiveReports做好的模板,想在页面添加一个预览BUTTON
在当前点击BUTTON之后 保留当前窗口 然后新建一个窗口来预览PDF

之前代码
  1. SectionReport rpt = new SectionReport();
  2.             XmlTextReader xtr = new XmlTextReader(Server.MapPath("~") + @"\Reports\model.rpx");
  3.             rpt.LoadLayout(xtr);
  4.             xtr.Close();
  5.             rpt.DataSource = Session["DataTable"];
  6.             rpt.Run();
  7.             Response.ContentType = "application/pdf";
  8.             Response.AddHeader("content-disposition", "inline; filename="+HttpUtility.UrlEncode("downloadpdf.PDF",System.Text.Encoding.UTF8));
  9.             PdfExport pdf = new PdfExport();
  10.             MemoryStream memStream = new MemoryStream();
  11.             pdf.Export(rpt.Document, memStream);
  12.             Response.BinaryWrite(memStream.ToArray());
  13.             Response.End();
复制代码


但是这样 会在当前页面打开PDF  覆盖了点击BUTTON之前的页面。
希望效果是:保留当前窗口 然后新建一个窗口来预览PDF

3 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-5-29 12:06:00
沙发
回复 1楼mamazi的帖子

如果直接返回 PDF 文件是会覆盖该页面,你可以在该页面中添加一个 ActiveReports 提供的 WebViewer 控件,初始状态为不可见,在点击Button之后给WebViewer设置Report属性,并显示WebViewer控件。
回复 使用道具 举报
mamazi
论坛元老   /  发表于:2013-5-31 16:11:00
板凳
回复 2楼dof的帖子

嗯 这个方法试了一下 是不是直接会在页面上显示呢?
用了另外一个种方法 新建了一个界面Download.aspx
把写STREAM 方法(Response.BinaryWrite(memStream.ToArray());)
写到了Download页面的PAGELOAD方法中 。
十分感谢回答
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-5-31 18:12:00
地板
回复 3楼mamazi的帖子

还有一点,你现在的的代码是"inline; filename="+HttpUtility.UrlEncode("downloadpdf.PDF",System.Text.Encoding.UTF8));


你可以将inline修改为attachment,这样将作为附件进行下载。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部