怎么解决水晶报表第一次打印慢的问题?大家多数怀疑两种原因:
(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,为的是让水晶报表提前把要加载的东西都提前加载上,这样进入到打印窗体的时候,几乎就是秒打了。。。。也不太会写,希望能对大家的问题有帮助。
|