zoukankan      html  css  js  c++  java
  • 水晶报表第一次打印慢问题的解决方法

    公司项目的业务要求用户取文件时需要打印文件确认单,使用水晶报表做了这个功能,但是在打印单子的时候第一次总是很慢,据粗略计算大约要等30秒之后才会进行打印,在网上看了好多,许多人也遇到了一样的问题,在Csdn等一些论坛里,大家多数怀疑两种原因:

    (1)有人怀疑是因为可能数据量大或者sql写法的问题让检查,我的数据一般只有1-10条左右,应该不是数据的问题

    (2)另一种就是建议换控件,不太想使用第三方的东西,还使用过vs里面自带的控件,但是导出会有些问题,可以使用操作office直接导出到word打印,但是又需要在客户机上安装office

    在调试的时候发现第一次打印的时候之所以慢是因为SetDataSource()方法上卡了一会,所以我想到了一个方法来解决这个问题,跟大家分享一下。与其说解决,只是找个投机的方法把这个问题隐藏掉。我不太了解水晶报表具体的加载方法,但是根据调试我怀疑在第一次SetDataSource()方法执行的时候水晶报表会加载一些东西所以会很慢,所以我在程序开始运行的时候天下了下面代码:(code内个东西不好使,直接写了)

               
     1 #region 缓存文件清单
     2 
     3 //为了解决水晶报表第一次打印慢的问题
     4 DataTable dt = new DataTable();
     5 dt.Columns.Add("temp");
     6 //水晶报表对象
     7 Forms.Report.RptFileList file = new Forms.Report.RptFileList();
     8 file.SetDataSource(dt);
     9 
    10 #endregion 缓存文件清单
    11 Application.Run(new Forms.frmMain()); 

    看代码很明显,我把这段代码放在了Program.cs中加载主窗体之前,就是让水晶报表程序加载时候就提前加载一次空的DataTable,为的是让水晶报表提前把要加载的东西都提前加载上,这样进入到打印窗体的时候,几乎就是秒打了。。。。也不太会写,希望能对大家的问题有帮助。 

  • 相关阅读:
    面对诱惑我们应有的态度
    TED 停止寻找你的热情
    C字符数组的处理
    对Linux(Unix)的基础知识归纳
    对Hadoop体系的一点认识
    Android开发涉及有点概念&相关知识点(待写)
    IOS开发涉及有点概念&相关知识点
    对CLR基本原理概念&垃圾回收机制的简单理解
    含有指针变量的类需要重写拷贝构造函数,拷贝赋值函数,析构函数
    malloc分配内存的结构
  • 原文地址:https://www.cnblogs.com/chiglish/p/2254871.html
Copyright © 2011-2022 走看看