水晶报表首次启动慢解决方案及表内框线微调设计方法

简介:     VS加水晶报表一些问题让人真的很头疼,这里记录两个问题与大家共勉。 一、水晶报表首次启动慢,启动过一次后正常的问题。     这个问题确实存在,同时我相信地球人使用水晶报表的人都会遇到这个问题。

    VS加水晶报表一些问题让人真的很头疼,这里记录两个问题与大家共勉。

一、水晶报表首次启动慢,启动过一次后正常的问题。

    这个问题确实存在,同时我相信地球人使用水晶报表的人都会遇到这个问题。引起这个问题的原因很多,Report.SetDataSource()是一个原因之一。目前有两个较好的两个步骤进行启动的优化。

Step one、不搜索打印机

image

图1

    (来自博客http://stackoverflow.com/questions/16662725/crystal-report-takes-long-time-to-load-every-time-in-vs2010

    按照这个方法,我们在设计器去把【打印机】项去掉。

image

图2

image

图3

    在将图3的【取消格式设置页面大小和打印机纸张大小关联】项后,明显加载的速度提升了1-2秒。

    如果不勾上面项,则是报表在搜索打印机的时间耗时了。进行上面一步,只是加速了一部分,还没达到更快的效果。

 

Step two、辅助线程中进行首次报表生成动作

    因为报表确实存在首次生成时速度较快,后面的生成较快的现象。故可以在应用程序启动(或者其他空闲时间)的时候开启一个子线程来进行一次报表的初始化,后面真正要调用的时候就变成第二次调用了,这个就可以较好的解决上述问题了。

操作步骤如下:

(1)在某个地方开启线程初始化报表


  1. Thread trdReport = new Thread(new ThreadStart(this.InitCrystalReport));
  2. trdReport.Priority = ThreadPriority.BelowNormal;
  3. trdReport.Start();


(2)在线程处理函数中实现一次报表生成实例(不用show)

    上面的InitCrystalReport()函数的作用是去crystalReportViewer所在的窗体(这里是ReportPrint)中初始化一次,当然不用show出来。


  1. public void InitCrystalReport()
  2. {
  3.     ReportPrint rPrint = new ReportPrint();
  4.     rPrint.JustTest();
  5. }


    ReportPrint的JustTest()方法是去加载具体的报表模板生成一次。


  1. public void JustTest()
  2. {
  3.     MyReport myReport= new MyReport ();
  4.     ReportDocument document = (ReportDocument)myReport;
  5.     this.crystalReportViewer1.ReportSource = document;
  6. }


    综上,便在后台神秘进行了一次报表生成工作,而这次生成的速度无论多慢帮应用程序来讲都没有一次影响,从而达到提升启动性能的效果。

 

二、报表设计的线条、框微调问题

image

图4

    上图4中的线程和方框如何让它们准确的左右一致呢?用鼠标调和键盘上下左右键调节是作用不大的,各位可以亲自试试。

    真正的窍门在这里:

image

图5 方框的Position

    要想两者左右对齐,只需要将两者的Left,Right设置相同就Ok了。非常吻合!

    Bottom及Top为同样道理。

相关文章
打印文档即提示Print driver host for 32bit applications
主机win7 32位系统,打印一切正常,共享打印机后,客户机为win7 64位系统连接该共享打印机,连接成功,驱动安装正常,x64驱动,客户机打印测试页正常,但打印文档即提示Print driver host for 32bit applications。
8797 0
打印文档即提示Print driver host for 32bit applications
|
JavaScript 前端开发 算法
千分位分隔?一个vue指令搞定
千分位分隔?一个vue指令搞定
247 0
|
存储 算法 安全
深入了解哈希映射(HashMap)
哈希映射是现代软件开发中不可或缺的一种数据结构,它通过独特的存储和检索机制,提供了高效的数据处理能力。正确理解和使用哈希映射,能够显著提高软件性能和开发效率。不论是在日常的软件开发还是在处理大规模数据集时,哈希映射都是一个极佳的选择。
337 1
|
8月前
|
数据库管理
Dify On DMS 产品能力与案例介绍
Dify On DMS 产品能力与案例介绍
|
机器学习/深度学习 JavaScript 前端开发
JavaScript 错误 - throw、try 和 catch
JavaScript 错误 - throw、try 和 catch
122 3
|
JavaScript
在Vue3+ElementPlus项目中使用具有懒加载的el-tree树形控件
在Vue 3和Element Plus项目中实现具有懒加载功能的el-tree树形控件,以优化大数据量时的页面性能。
2675 0
|
Java 关系型数据库 MySQL
连接MySQL数据库的最优JDBC代码
连接MySQL数据库的最优JDBC代码
|
数据安全/隐私保护 Windows
使用Serv-U FTP服务器共享文件,实现无公网IP环境下远程访问-2
使用Serv-U FTP服务器共享文件,实现无公网IP环境下远程访问
271 0
|
网络协议 网络架构
TCP-IP四层模型是什么
TCP-IP四层模型是什么
|
安全 网络安全 数据安全/隐私保护
什么是域名证书?
SSL证书的种类有好几种,都是用于保证网络传输的安全的。其中运用得比较普遍化的是域名证书,那么什么是域名SSL证书呢,很多人都不理解,下面就来看看吧。  首先要明确的是,SSL是一种网络传输安全协议,所以在网站的正常使用中都需要配置相关的SSL证书。
6386 0