在 RDLC 報表設計師中新增參數後,網頁執行時 ReportViewer 控制項完全不顯示(空白),且無任何例外拋出、無錯誤訊息於 Output 視窗。
ReportParameter("ParamName", ...) 時必須與報表定義完全相同。SubreportProcessing 事件中正確對應。null 給非可為 null 參數會導致報表處理失敗而不顯示。ReportParameter 建構子的值型別(字串、整數、日期)與報表定義一致。protected void ReportViewer1_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
{
// 必須為子報表的每個參數加入值
e.DataSourceCredentials.Add(...); // 若有資料源憑證
e.ReportParameters.Add(new ReportParameter("ChildParam", "Value"));
}
Page_Load(非 PostBack)或按鈕事件中重新設定 ReportViewer.LocalReport.DataSources 並呼叫 ReportViewer.LocalReport.Refresh()。ReportViewer.ProcessingMode = Remote,參數需透過 ServerReport.SetParameters() 傳遞,而非 LocalReport。<asp:ScriptManager>。LocalReport.EnableHyperlinks = true 觀察是否有超連結錯誤。ReportViewer 的 AsyncRendering 屬性,嘗試設為 false。Microsoft.Reporting 相關錯誤。protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ReportViewer1.ProcessingMode = ProcessingMode.Local;
ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Reports/MyReport.rdlc");
// 設定資料源
var dt = GetData();
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));
// 設定參數(名稱、值完全對應 RDLC 定義)
var paramsList = new List<ReportParameter> {
new ReportParameter("StartDate", DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd")),
new ReportParameter("EndDate", DateTime.Now.ToString("yyyy-MM-dd"))
};
ReportViewer1.LocalReport.SetParameters(paramsList);
ReportViewer1.LocalReport.Refresh();
}
}
RDLC 加參數後 ReportViewer 空白通常源於參數名稱/值/型別不符、子報表參數未傳遞、資料源未重繫或模式設定錯誤。建議逐項對照上述清單,並善用「移除參數測試」法快速定位。