wy89757 发表于 2021-5-18 14:26:34

SectionReport.run()效率如何提升

本帖最后由 wy89757 于 2021-5-18 16:55 编辑


private void Form1_Load(object sender, EventArgs e)
      {
            SectionReport report1 = new SectionReport();
            SectionReport report2 = new SectionReport();
         ............
            SectionReport report100 = new SectionReport();

             report1.LoadLayout(@"..\..\Report1.rpx");
             report2.LoadLayout(@"..\..\Report2.rpx");            
            ............
             report100.LoadLayout(@"..\..\Report100.rpx");

             report1.Run();
             report2.Run();         
             ............
             report100.Run();   

      report1.Document.Pages.AddRange(report2.Document.Pages);
      report1.Document.Pages.AddRange(report3.Document.Pages);
      ............
      report1.Document.Pages.AddRange(report100.Document.Pages);

      viewer1.Document = report1.Document;
                  }




在实际代码运行中,黄色部分的代码执行效率很低,大概需要一分钟。有没有办法只Run()一次,而不是Run()一百次?
            report1.Run();            report2.Run();             ..........            report100.Run();

Crystal.Li 发表于 2021-5-18 16:55:18

您好,这个代码逻辑 有点看不大懂。
您可以参考一下我们demo示例,关于section report的绑定:

可以在这里下载源码:
https://github.com/activereports/Samples15

wy89757 发表于 2021-5-18 17:08:19

Crystal.Li 发表于 2021-5-18 16:55
您好,这个代码逻辑 有点看不大懂。
您可以参考一下我们demo示例,关于section report的绑定:



我是想一次性预览100张报表,但是又不想每张报表都执行一次Run()方法,因为执行100次Run()方法很耗时间,有没有办法让这100张报表只执行一次Run()方法?从而提高速度?

Crystal.Li 发表于 2021-5-18 18:52:38

您为啥要这样实现呢?您这个需求我们没有太理解,一般都是点击一张,加载一张报表,如果同时预览100张报表,应该没有什么好的方案,您可以说一下您的业务需求,我们看看是否有更好的方案。

wy89757 发表于 2021-5-19 09:43:15

Crystal.Li 发表于 2021-5-18 18:52
您为啥要这样实现呢?您这个需求我们没有太理解,一般都是点击一张,加载一张报表,如果同时预览100张报表 ...

需求是:客户他们不想一张一张的预览,想按下【批量预览按钮】后,把所有的报表一次性的预览到一个窗口里,但问题是加载速度很慢,Run()方法执行上百次会耗费大量的时间

Crystal.Li 发表于 2021-5-19 11:19:50

首先给您说一下,同时预览100张报表肯定是有性能问题的,一次性请求的报表数量多,数据量大,必然是有性能问题。所以我们这边认为这个需求不是很合理,建议最好不要这么使用~
页: [1]
查看完整版本: SectionReport.run()效率如何提升