0
我在網站中使用ReportViewer控件,我的報告包含3個或更多子報告。子報表中的數據通常不存在,因爲它是可選數據。我需要輸出一個很好格式化和對齊的消息,讓讀者知道。我有以下代碼:如何在Microsoft rdlc子報告中沒有行時創建一條好消息?
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屬性太有限制。
理想情況下,我希望每個子報告使用exporession或代碼來處理no rows消息本身。然而,微軟工作方式的缺陷似乎在於報告是以要顯示數據爲條件的。