有多页数据需要打印时,RDCL报表有时会发生只能打印第一页的情况,而点击了打印布局按钮后,有时能正常的打印后续页。
鉴于这种情况,我们可以控制打印界面的呈现模式,避开这个小Bug,代码如下:
public frmFirstCases_Print(DataSet ds)
{
InitializeComponent();
this.DsSource = ds;
}
private void frmFirstCases_Print_Load(object sender, EventArgs e)
{
// 设置本地报表的路径(App.SysPath通常指向程序启动的框架)
this.reportViewer1.LocalReport.ReportPath = App.SysPath + "\\First_Cases.rdlc";
// 清空并添加报表数据源
reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsReportSource_Cover_Info",
DsSource.Tables[0]));
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsReportSource_Cover_Diagnose",
DsSource.Tables[1]));
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsReportSource_Cover_Operation",
DsSource.Tables[2]));
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsReportSource_Cover_Quality",
DsSource.Tables[3]));
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsReportSource_Cover_Temp",
DsSource.Tables[4]));
// 呈现报表
this.reportViewer1.RefreshReport();
// 将显示模式切换到打印布局模式
this.reportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
// 将缩放模式设置为百分比
this.reportViewer1.ZoomMode = ZoomMode.Percent;
// 设为 100%
this.reportViewer1.ZoomPercent = 100;
}