我在使用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.PackingItemList
是IEnumerable
集合,在本例中为ObservableCollection
,数据已加载且事件为拾取并在加载数据时刷新报表视图,我还有一个按下按钮时按下该按钮运行刷新,但无论如何,我尝试报告始终显示为没有数据。
我确定我在这里遗漏了一些东西,但谷歌的结果充斥着控制软件包中的页面,例如Telerik和componentone,这些内容远远不够昂贵。
所有这一切都在完成,因此我可以在多个页面上打印一个数据网格来维护这些组,这些我认为非常标准,但结果却非常复杂。
编辑:
另外需要注意的是,reportviewer似乎在绘制,但报告本身缺失,没有标题,没有数据,并且所有控件都被禁用,即使我可以清楚地看到localreport的数据源已经49个价值观,我完全被难倒了。
答案 0 :(得分:3)
_reportViewer.RefreshReport();
答案 1 :(得分:1)
我已经构建了.net4应用,并且在WPF应用下使用内置的.RDLC报告非常好。我曾经有过这样的情况:报告看起来似乎没有具体的理解原因。在某些情况下,我只需要删除数据源/对象模式引用,然后重新添加它们就可以了。
我所做的另一种方法是创建一个全新的报告,然后将您的数据源添加到报告中,然后只需执行2-3个字段的简单列式报告,并将报告更改为仅运行该报告。一旦有效,我就会将原始报告的部分复制/粘贴到新报告中,并一次保留工件。也许从报告中的标题开始并忽略细节/页脚,然后添加任何页脚信息,然后添加中间细节。您可能会遇到一些问题,区分大小写的模式名称期望会导致问题,甚至是“隐藏”或其他条件表达式何时显示/隐藏某些输出字段。
只是要确认一下,报告在调试模式下是否在视觉上失败,而不仅仅是在运行时正确?