Report 当Microsoft rdlc子报表中没有行时,如何创建一条好消息?
我在网站中使用ReportViewer控件,我的报告包含3个或更多子报告。子报表中的数据通常不存在,因为它是可选数据。我需要输出一个格式良好、对齐的消息,让读者知道。我有以下代码:Report 当Microsoft rdlc子报表中没有行时,如何创建一条好消息?,report,reporting,reportviewer,subreport,report-viewer2010,Report,Reporting,Reportviewer,Subreport,Report Viewer2010,我在网站中使用ReportViewer控件,我的报告包含3个或更多子报告。子报表中的数据通常不存在,因为它是可选数据。我需要输出一个格式良好、对齐的消息,让读者知道。我有以下代码: protected void ReportViewer1_SubreportProcessing(object sender, SubreportProcessingEventArgs e) { DataTable dtReport = GetReportSub(reportId);
protected void ReportViewer1_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
DataTable dtReport = GetReportSub(reportId);
foreach (DataRow drRow in dtReport.Rows)
{
if (Replace(drRow["subName"].ToString(), " ", "") == e.ReportPath)
{
string sSQLMain = SQLReplacer(drRow["subSQL"].ToString());
DataTable dtData = BuildCollectionArray(sSQLMain, new OdbcParameter());
if (dtData.Rows.Count == 0)
{
//TODO: Hide the report and show a friendly message
}
else
{
ReportDataSource dataSource = new ReportDataSource("DS" + Replace(drRow["subName"].ToString(), " ", ""), dtData);
e.DataSources.Add(dataSource);
}
break;
}
}
}
它将获取数据并将其添加到需要它的报告中。但是,如果没有数据,则唯一的选项是NoRowsMessage属性。但是,每个子报告的主报告中的NoRowsMessage属性限制太大
理想情况下,我希望每个子报告都使用表达式或代码来处理无行消息本身。但是,Microsoft工作方式中的缺陷似乎是,报告的条件是要显示数据。因此,我找到了解决问题的可行方法。我忽略了默认的no rows函数,而是在子报表中进行工作 我有一个包含我详细信息的Tablix,然后我将创建一个包含我的无行消息的额外文本框。“无行”消息根据数据集而隐藏,例如:
=iif(Sum(Fields!ActID.Value, "DSSub") > 0, true, false)