reportviewer在WPF中使用rdlc

时间:2013-10-23 12:11:44

标签: c# wpf reporting reportviewer rdlc

我在使用wpf运行reportviewer时遇到了严重问题,我在google上查找的大部分信息都是相同的教程副本和粘贴或建议购买£2k软件包,这些都没有帮助我。

我没有错误,没有任何消息,但报告显示为空白,没有数据。然而,我可以在调试器中存在数据。我有以下代码:

    private void reportViewer_Load(object sender, EventArgs e)
    {
    if (!_isReportViewLoaded)
    {
                Microsoft.Reporting.WinForms.ReportDataSource reportDataSource = new Microsoft.Reporting.WinForms.ReportDataSource();
                PackingListManager pManager = (PackingListManager)IoC.Get<IManager<PackingItem>>();
                reportDataSource.Name = "PackingListDataset";
                reportDataSource.Value = pManager.PackingItemList;
                this._reportViewer.LocalReport.DataSources.Add(reportDataSource);
                this._reportViewer.LocalReport.ReportEmbeddedResource = "ShippingClient.Report1.rdlc";
                //_reportViewer.Refresh();
                _isReportViewLoaded = true;
                _reportViewer.Refresh();
     }

数据集名称对于报表中设置的内容是正确的,pManager.PackingItemListIEnumerable集合,在本例中为ObservableCollection,数据已加载且事件为拾取并在加载数据时刷新报表视图,我还有一个按下按钮时按下该按钮运行刷新,但无论如何,我尝试报告始终显示为没有数据。

我确定我在这里遗漏了一些东西,但谷歌的结果充斥着控制软件包中的页面,例如Telerik和componentone,这些内容远远不够昂贵。

所有这一切都在完成,因此我可以在多个页面上打印一个数据网格来维护这些组,这些我认为非常标准,但结果却非常复杂。

编辑:

另外需要注意的是,reportviewer似乎在绘制,但报告本身缺失,没有标题,没有数据,并且所有控件都被禁用,即使我可以清楚地看到localreport的数据源已经49个价值观,我完全被难倒了。

2 个答案:

答案 0 :(得分:3)

_reportViewer.RefreshReport();

答案 1 :(得分:1)

我已经构建了.net4应用,并且在WPF应用下使用内置的.RDLC报告非常好。我曾经有过这样的情况:报告看起来似乎没有具体的理解原因。在某些情况下,我只需要删除数据源/对象模式引用,然后重新添加它们就可以了。

我所做的另一种方法是创建一个全新的报告,然后将您的数据源添加到报告中,然后只需执行2-3个字段的简单列式报告,并将报告更改为仅运行该报告。一旦有效,我就会将原始报告的部分复制/粘贴到新报告中,并一次保留工件。也许从报告中的标题开始并忽略细节/页脚,然后添加任何页脚信息,然后添加中间细节。您可能会遇到一些问题,区分大小写的模式名称期望会导致问题,甚至是“隐藏”或其他条件表达式何时显示/隐藏某些输出字段。

只是要确认一下,报告在调试模式下是否在视觉上失败,而不仅仅是在运行时正确?