lihuioooo 发表于 2016-8-11 12:00:28

Lenka.Guo 发表于 2016-8-11 09:20
通过这一行代码大,但是在OnCreate方法中只能获取到参数的默认值,而在LocateDatasource中可以获取到参数的 ...

发现在 调用pdf.Export(doc.Document, memStream); 时会重新调用definition1.Document.LocateDataSource += new LocateDataSourceEventHandler(Document_LocateDataSource);事件
导致死循环了

Lenka.Guo 发表于 2016-8-11 12:23:34

您可以看看我上楼中上传的示例,主要是写在Oncreate的方法中,您可以了解下。

lihuioooo 发表于 2016-8-11 14:19:23

Lenka.Guo 发表于 2016-8-11 12:23
您可以看看我上楼中上传的示例,主要是写在Oncreate的方法中,您可以了解下。

你写的那个demo 我看到了, 和我存在同样的问题 ,
pageDocument.Render(pdfRenderingExtension, outputProvider, pdfSetting);在执行这个方法时 也会激发Document_LocateDataSource 二次执行,只不过你没在这里去动态获取报表参数,否则也会出现和我一样的遭遇,进入死循环,我在这里获取了报表的参数 并绑定了事件,事件会激发将报表转为数据流,一旦激发后 就会执行类似你 pageDocument.Render(pdfRenderingExtension, outputProvider, pdfSetting);   这个方法

lihuioooo 发表于 2016-8-11 16:15:29

我再说下我的事情场景吧
现在我们要做一个审核操作是一个按钮,在点击这个按钮时 要触发一个报表请求,webservice接收到这个请求后要把报表处理出来并导成数据流入库,然后返回一个自增ID和流数据给这个请求,前台根据这个数据流会自动调用打印机进行打印,简单的业务流程就是这样。 现在可以转成流了,但是不知道前台以哪种方式进行我和交互,我想暴露一个接口出来 但触发不了Document_LocateDataSource

天心天思技术部 发表于 2016-8-11 17:41:22

本帖最后由 天心天思技术部 于 2016-8-11 17:49 编辑

lihuioooo 发表于 2016-8-11 16:15
我再说下我的事情场景吧
现在我们要做一个审核操作是一个按钮,在点击这个按钮时 要触发一个报表请求,web ...
HI~ 你好,鉴于你的这个业务逻辑与我前些时间做的DEMO有几分相似, 其实当你从webservice上获取到对应的报表文件后,转换成IO流文件, 同样的,在你执行打印前抓取到前台返回选中的报表模板时,你再次进行转换将获取到的IO流变成实体sectionreport 或者 pagereport 在或者RDL报表,然后你在执行报表对象 xxx.Run(), 在执行这个方法的时候就可以执行到你添加的Document_LocateDataSource数据绑定的function!

Lenka.Guo 发表于 2016-8-11 18:38:49

如电话所沟通,暂时采取的方法就是通过为报表对象修改 datasource 的属性来实现
页: 1 [2]
查看完整版本: 如何在后台执行报表生成并将文件保存在服务器