2011-02-09 43 views
2

我创建了一个与WCF服务通信的“winform”应用程序。我需要从WCF服务生成报告我的选择是什么?

winform显示包含许多行的datagridview。用户可以选择(复选框)他希望打印的行,然后单击打印按钮。

选定的行被发送到我的WCF服务中的一个方法,该方法又返回二进制数据(要打印的文档)的集合。一旦返回,我在磁盘上为返回的集合中的每个二进制数据创建一个pdf文件。

一旦完成,这些新创建的文件发送到打印机...

注: 之前创建这些PDF文档,我需要建立一个将之前的任何这些PDF文档的打印的“摘要”报告文件。

为此,我在我的WCF服务中调用一个将返回二进制数据的方法。然后我得到这个二进制文件,并用它创建一个摘要pdf文档...

这是我的问题: 什么是最好的方法来创建我的“汇总报告”?

到目前为止,我一直在尝试使用Reporting Services来设计我的总结报告,但是我正在抓住一些我希望在该报告中做的事情(即:试图添加复选框列和使其“选择”或不依赖于特定的规则和/或使我的报告双语......)。所以我想可能RS不像我想的那样灵活/直观......

我的WCF服务将调用Reporting Services Web服务,调用相应的报告并返回我将发回的二进制数据到winform应用程序。

我虽然也用水晶报表,但因为我从来没有使用过它,它会适得其反......

,我能想到的最后的选择是从我沿着通过WCF服务内调用网页必要的参数。该网页会呈现自己,我试图将该网页转换成二进制数据,这将通过我的WCF服务方法返回...

虽然我还没有尝试过最后一种方法,但我认为它可能会给我更多我可以/不可以做什么的灵活性。

有没有人有一个建议或其他替代方案可以帮助我? 感谢

回答

1

我不知道这个帖子还开着......

如果有人关心就知道了,这是我终于想出了解决方案:

我获得后的二进制数据的收集和循环遍历该集合以在用户磁盘上生成物理PDF文件,我需要一种方法(第二次)调用我的WCF来生成摘要报告。一旦渲染,想法就是获得生成的结果(二进制)并将该数据发送回winform应用程序,以便我可以创建一个不错的Summary.pdf文件(在用户的磁盘上)。

完成后,以编程方式将所有生成的PDF文件使用第三方组件发送到打印机。

现在...因为总结报告可能需要一段时间才能显示出来,所以我增加了发生超时的可能性。增加超时并不是一个合适的选择...

因此,解决方案是,而不是在服务器上调用/创建摘要报告,我决定在我的winform应用程序内部集成一个客户端报告定义文件(.rdlc)。

基本上,当我安装winform应用程序时,它还包含Summary.rdlc文件。在适当的时候,我从我的WCF服务获取报告所需的数据,并将这些数据提供给在用户计算机上本地呈现的.rdlc文件,然后在用户的磁盘上创建Summary.pdf文件。

就这样!