求 reportview 生成大数据量的PDF文件 解决方案

a407790089 2016-01-11 09:54:38
本人这边的任务要求是生成考生的准考证PDF文件
由于每个文件都配有照片,大小大概是3K左右。所以当人数过多是数据量极大。
在业务上已经将数据分成了很多小组,现在想要一次性生成所有的PDF文件遇到了麻烦。
补充一句:系统是BS,使用的是webforms的DLL
原本准备利用工作线程,在后台生成出所有的PDF文件,前台则是同步显示生成进度。
但是实际使用时发现, reportview在绑定好数据源之后
类似代码如下

localreport.DataSources.clear();
localreport,DataSources.Add(new ReportDataSource("zkzData",reportData));
lr.ReportPath="zkz.rdlc";

执行之后localreport.IsReadyForRendering 一直显示的FALSE,导致无法使用render方法导出字节流。(同样代码如果使用UI线程则是完全可以使用的)

所以现在比较困惑,如果需要生成较多的PDF文件,需要如何解决?
...全文
488 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
a407790089 2016-01-12
  • 打赏
  • 举报
回复
引用 2 楼 save4me 的回复:
你的报表有参数吗?如果有,检查一下报表的参数是否都设置好了。
构建报表以及生成PDF文件都是公用方法 一旦去掉工作线程,而是直接调用,可以正常使用。 但是因为数据量大,所以必然会导致页面长时间假死,到最后还没执行完就TImeout了。
a407790089 2016-01-12
  • 打赏
  • 举报
回复
引用 3 楼 huangcailian 的回复:
你现在这种方式如果成功的话和你直接使用UI线程有什么区别嘛? 你说的数据量极大 那你的问题是查询数据慢了还是渲染数据时慢或者是其他什么问题?
首先我是直接用的LocalReport这个类,是用于直接导出而不生成显示的,MSDN可以查到。 其次ReportView的机制是需要将表数据加入到类当中,当数据量大的时候慢是一个问题,最重要的是内存问题。 试想10W数据量,每个需要签入一个3K左右的图片,这还不计算其他的字段消耗,内存怎么扛得住。 本身的任务是导出所有的报表文件,所以才用了工作线程,让它安静的在后台生成文件。如果不用工作线程,页面将一直处于假死状态,而且这还是在不考虑timeout的情况下。 @huangcailian
小K的大师兄 2016-01-11
  • 打赏
  • 举报
回复
你现在这种方式如果成功的话和你直接使用UI线程有什么区别嘛? 你说的数据量极大 那你的问题是查询数据慢了还是渲染数据时慢或者是其他什么问题?
save4me 2016-01-11
  • 打赏
  • 举报
回复
你的报表有参数吗?如果有,检查一下报表的参数是否都设置好了。
a407790089 2016-01-11
  • 打赏
  • 举报
回复
求顶 求回复,不要沉贴

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧