找回密码
 立即注册

QQ登录

只需一步,快速开始

Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-8-12 17:36:55
11#
PDFRendering 相当于后台导出PDF文件,看您的代码建议您采取这样的方式,修改前台代码,可无预览直接导出:

  1.   var viewer = GrapeCity.ActiveReports.JSViewer.create({
  2.         element: '#viewerContainer',
  3.         reportID: 'RDL报表.rdlx;', //报表名称
  4.         //availableExports: ['Xml', 'Pdf'],//导出的方式

  5.         reportService: {},
  6.         renderMode: 'Galley',//画廊模式
  7.         // other properties
  8.         documentLoaded: () => {        
  9.    
  10.             viewer.export('Pdf', null, true, { Title: '1997 Annual Report' })
复制代码


回复 使用道具 举报
golden
注册会员   /  发表于:2020-8-12 17:50:05
12#
你好,你最新给的这个最新的代码示例,应该是JSViewer的示例代码,有webview的示例么?
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-8-13 09:12:12
13#
WebViewer 的导出参考代码:可以写到Page_Load里面
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("Test2.rdlx")));
  4.             var name = pageReport.Report.Name;

  5.             // Create an output directory.
  6.             System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyPDF");
  7.             outputDirectory.Create();

  8.             // Provide settings for your rendering output.
  9.             GrapeCity.ActiveReports.Export.Pdf.Page.Settings pdfSetting = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings();

  10.             // Set the rendering extension and render the report.
  11.             GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();
  12.             GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));

  13.             // Overwrite output file if it already exists
  14.             outputProvider.OverwriteOutputFile = true;

  15.             pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting);
  16.             WebViewer1.Report = pageReport.Report;
  17.             


  18.         }
复制代码



回复 使用道具 举报
golden
注册会员   /  发表于:2020-8-13 15:56:58
14#
你好,家在你发的代码,出现了错误,好像是因为数据源的问题,我的数据是动态在代码里加载进去的,不是在报表里直连数据库的,请问这个怎么结局?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
golden
注册会员   /  发表于:2020-8-13 16:29:51
15#
万分火急,麻烦帮忙解决下,谢谢了
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-8-13 20:14:51
16#
收到,我这边之前忽略了您是运行时绑定数据源,我明天给您制作一个demo发送给你。
回复 使用道具 举报
golden
注册会员   /  发表于:2020-8-14 08:58:32
17#
谢谢了
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-8-14 10:19:51
18#
Hello
我看您那边是因为报表展示过慢,所以我在页面中删除了WebViewer,添加了按钮,如下


在按钮点击事件中添加了以下代码,可成功导出:
  1. protected void Button1_Click(object sender, EventArgs e)
  2.         {
  3.             GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("RdlReport1.rdlx")));
  4.             pageReport.Document.LocateDataSource += Document_LocateDataSource;
  5.             // Create an output directory.
  6.             System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyPDF");
  7.             outputDirectory.Create();

  8.             // Provide settings for your rendering output.
  9.             GrapeCity.ActiveReports.Export.Pdf.Page.Settings pdfSetting = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings();

  10.             // Set the rendering extension and render the report.
  11.             GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();
  12.             GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));

  13.             //    // Overwrite output file if it already exists
  14.             //    outputProvider.OverwriteOutputFile = true;

  15.              pageReport.Document.Render(pdfRenderingExtension, outputProvider, pdfSetting);


  16.         }

  17.         private void Document_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  18.         {
  19.             System.Data.DataTable dt = new System.Data.DataTable();
  20.             if (args.Report.DataSets[0].Name == "DataSet1")
  21.             {


  22.                 dt.Columns.Add("Field1");
  23.                 dt.Columns.Add("Field2");
  24.                 dt.Rows.Add("1", "1");
  25.                 dt.Rows.Add("2", "2");
  26.                 args.Data = dt;

  27.             }


  28.          
  29.         }
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
golden
注册会员   /  发表于:2020-8-16 14:53:08
19#
你好,尝试用您的代码试了一下,是可以的,但是出现了一个问题,导出以后IIS管理器内存持续变大,导出成功以后内存也不会小下来,是不是代码那个地方要处理释放内存?不然服务器导出几次就内存就爆了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-8-17 09:39:16
20#
这个的话,你可以代码端执行一个内存清理的操作,在 导出结束的时候进行一次内存清理,具体代码的写法你可以 网上找下资料,这是我搜的https://jingyan.baidu.com/article/7f766daf0b9d430100e1d059.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部