c# - SubreportProcessing 未在 rdlc 报告上触发
问题描述
您好,我在使用 RDLC 子报告时遇到问题。我有一个非常简单的设置,在那里我有人和他们的住所。
问题是没有加载包含每个人的住所的子报告,因为从未触发 SubreportProcessing 事件。
我已经像这样设置了我的reportviewer:
private void LoadAnniversaryReport()
{
DataSet dt = new ResidentSearchServiceClient().GetAnniversaries();
residenceDataTable = dt.Tables[1];
ReportDataSource personDataSource = new ReportDataSource("Dataset", dt.Tables[0]);
this.ReportViewer.LocalReport.ReportPath = "Reports\\Anniversary\\Anniversary.rdlc";
this.ReportViewer.LocalReport.DataSources.Clear();
this.ReportViewer.LocalReport.DataSources.Add(personDataSource);
this.ReportViewer.LocalReport.SubreportProcessing += ResidenceSubreportProcessing;
this.ReportViewer.Refresh();
this.ReportViewer.RefreshReport();
_isReportViewerLoaded = true;
}
子报表有一个名为“Id”的参数。这是子报表参数定义的 xml:
<ReportParameters>
<ReportParameter Name="Id">
<DataType>Float</DataType>
<Nullable>true</Nullable>
<Prompt>ReportParameter1</Prompt>
</ReportParameter>
</ReportParameters>
以及父子报表和参数定义
<Subreport Name="PersonResidences">
<ReportName>PersonResidences</ReportName>
<Parameters>
<Parameter Name="Id">
<Value>=Fields!ENTITYID.Value</Value>
</Parameter>
</Parameters>
<OmitBorderOnPageBreak>true</OmitBorderOnPageBreak>
<Style>
<Border>
<Style>None</Style>
</Border>
</Style>
</Subreport>
“ReportName”是文件系统上报告的确切名称,不带 .rdlc 扩展名。两个报告都在同一个子目录中。
父报表在没有子报表的情况下工作正常。
我知道以前有人问过这个问题,但似乎没有一个答案能解决我的问题。
任何帮助将不胜感激。
编辑:遵循本教程并遇到完全相同的问题 https://www.c-sharpcorner.com/article/rdlc-subreport-using-c-sharp-and-wpf/
解决方案
好的,所以我设法解决了这个问题。
问题是,使用 VS2019,在编辑定义时会发生一些奇怪的事情。这导致我的目标命名空间错误!
最初,当我创建报告时,命名空间是
xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"
只要您在此报告中添加任何参数,VS 就会将其更改为
xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition"
我的“父”报告没有改变(因为它没有任何参数,除了子报告中定义的 on )。但是我的子报告发生了变化。
现在,默认版本的 ReportViewer 无法再显示子报表,并返回了非常有用的异常,即无法找到它。
所以我基本上做了两件事:
- 通过 Nuget (Microsoft.ReportViewer.VS2015.WinForms) 升级了我的 ReportViewer 程序集
- 确保两个报告都针对相同的命名空间
我希望有一天这会对某人有所帮助。
推荐阅读
- tensorflow - 如果实际正确类别的概率很小(
我需要关于训练模型的损失(categorical_crossentropy)的输入-目标组合的梯度。对于大多数示例,梯度看起来不错,但网络训练得越深入,出现的输入-目标组合越多,所有梯度都为零。为什么会这样,因为当概率绝对不同于目标时会发生这种情况?
我将网络定义如下:
X_train, Y
- javascript - 输入 addEventListener - 点击有效,onchange/oninput 无效
- regex - 匹配法语字符
- python - 如何在使用已删除项目创建另一个列表时从列表中删除项目?
- c# - Cosmos DB 调用永远不会通过异步调用返回
- c# - 根据 form_Load() 函数推进条形进度
- sql - oracle 中关于 HUGECLOB 的详细信息
- c - 如何修复结构数组指针重新分配的错误?
- r - 如何使用场景向 scatter3D Plotly 绘图添加注释?
- c# - 如何在运行时编译的类中使用编译时类?