2014-03-04 22 views
4

我试图在WPF应用程序中创建报告。 我使用Visual Studio 2010,C#和MVVM如何在不参考数据库的情况下在WPF MVVM应用程序中创建报告

我有很多研究,只有发现,通过使用数据库水晶报表处理网文章。在我的应用程序中,我不直接与数据库通信。我们使用网络服务。它与数据库进行通信并将所有数据写入xml文件。我们通过存储过程获得我们的信息。 希望这不是问题。

无论如何,在我的用户控件之一,我有一个数据网格填充了来自数据库的数据。我使用List和Observable Collection存储这些数据。因此,重新获取数据很容易。 但我现在想将数据导出到用户打印的报告中。

正如我所说,我已经阅读了报告,他们都使用某种形式的数据集或数据表。但正如我所说的,我们不直接使用数据库。

我下载了SAP Crystal Reports, developer version for Microsoft Visual Studio: Updates & Runtime Downloads只是为了确保我可以使用Crystal Reports。

我有一个想法,我必须创建一个新的用户控件或窗口视图,并通过ViewModel设置datacontext。在这个表单上应该是一个报表查看器控件,它将被填充。但我不知道该怎么通过,如果我能做到这样的事情。我可以通过List/ObservableCollection发送包含要保存到表单的数据并将其绑定到报表控件吗?以[此]为例2,这是我正在寻找的方向

或者是否有另一种不使用数据库创建报告的方式? 我只是想在我现有的WPF项目中创建一个报告。打开一个新的窗口或用户控件,并在这里加载报表查看器以及我在gridview中的数据。使用WPF和MVVM,我该如何实现这一点。

我也有Component One,如果有人知道如何使用它。该网站本身不提供关于他们报告视图主题的很好的教程。

请让我知道是否有其他任何你需要我,我会通过创建一个使用数据网格的用户控件进行编辑,我可以

回答

0

我认为你是在正确的轨道上。我认为你想打印某种报告的下一件事是DocumentPaginator。使用这种方法,您可以打印到.XPS文件,将用户控制权打印到纸上,或/和使用第三方XPS到PDF转换器。

Here是一个让你开始的例子!

+0

看起来像是我可以使用。要去尝试格式,它看起来像一个形式 –

+0

它可以是相当棘手计算出来,尤其是当你开始进入多个页面时基本上,当你使用DocumentPaginator进行打印时,你正在告诉打印机为每个页面准确打印什么,据说你可能需要计算页面上的行数, 。我用PDF虚拟打印机打印我的测试运行到.pdf,所以我没有浪费纸张。 – Kcvin

+0

你也许知道打印预览代码片段?我见过一个,但我找不到它。或你使用什么代码的PDF虚拟查看器? –

1

刚开始看着这个我自己,首先你可以添加一个基于你的EF上下文或Web服务的数据源。然后,您可以使用内置的报告工具集(基于SQL Server Report Services(尽管您不需要它来托管它们))。

虽然你将需要使用Windows窗体主机控制:( MSDN walkthrough about hosting reports in WPF

相关问题