1 引用程序集
Microsoft.ReportViewer.WinForms
2 xaml 命名空间
xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"
3 xaml 里用 windowsFormsHost 来装报表控件
- <WindowsFormsHost Margin="135,75,0,0" Panel.ZIndex="-1" Height="auto">
- <rv:ReportViewer x:Name="reportViewer" />
- </WindowsFormsHost>
3. 初始化控件参数
- this.reportViewer.Messages = new Health.Client.Base.ReportViewerMessagesZhcn();
- public class ReportViewerMessagesZhcn : IReportViewerMessages
- {
- public string BackButtonToolTip { get { return "后退"; } }
- public string BackMenuItemText { get { return "后退"; } }
- public string ChangeCredentialsText { get { return "更改"; } }
- public string CurrentPageTextBoxToolTip { get { return "当前页"; } }
- public string DocumentMapButtonToolTip { get { return "文档视图"; } }
- public string DocumentMapMenuItemText { get { return "文档视图"; } }
- public string ExportButtonToolTip { get { return "导出"; } }
- public string ExportMenuItemText { get { return "选择格式"; } }
- public string FalseValueText { get { return "不正确的值"; } }
- public string FindButtonText { get { return "查找"; } }
- public string FindButtonToolTip { get { return "查找"; } }
- public string FindNextButtonText { get { return "下一个"; } }
- public string FindNextButtonToolTip { get { return "下一个"; } }
- public string FirstPageButtonToolTip { get { return "首页"; } }
- public string LastPageButtonToolTip { get { return "最后一页"; } }
- public string NextPageButtonToolTip { get { return "下一页"; } }
- public string NoMoreMatches { get { return "无匹配项"; } }
- public string NullCheckBoxText { get { return "空值"; } }
- public string NullCheckBoxToolTip { get { return "空值"; } }
- public string NullValueText { get { return "空值"; } }
- public string PageOf { get { return "页"; } }
- public string PageSetupButtonToolTip { get { return "页面设置"; } }
- public string PageSetupMenuItemText { get { return "页面设置"; } }
- public string ParameterAreaButtonToolTip { get { return "参数设置区"; } }
- public string PasswordPrompt { get { return "请输入密码:"; } }
- public string PreviousPageButtonToolTip { get { return "前一页"; } }
- public string PrintButtonToolTip { get { return "打印"; } }
- public string PrintLayoutButtonToolTip { get { return "打印"; } }
- public string PrintLayoutMenuItemText { get { return "打印"; } }
- public string PrintMenuItemText { get { return "打印"; } }
- public string ProgressText { get { return "正在生成报表......"; } }
- public string RefreshButtonToolTip { get { return "刷新"; } }
- public string RefreshMenuItemText { get { return "刷新"; } }
- public string SearchTextBoxToolTip { get { return "查找"; } }
- public string SelectAll { get { return "全选"; } }
- public string SelectAValue { get { return "SelectAValue"; } }
- public string StopButtonToolTip { get { return "停止"; } }
- public string StopMenuItemText { get { return "停止"; } }
- public string TextNotFound { get { return "未找到"; } }
- public string TotalPagesToolTip { get { return "总页数"; } }
- public string TrueValueText { get { return "正确值"; } }
- public string UserNamePrompt { get { return "用户名"; } }
- public string ViewReportButtonText { get { return "显示报表"; } }
- public string ViewReportButtonToolTip { get { return "显示报表"; } }
- public string ZoomControlToolTip { get { return "缩放"; } }
- public string ZoomMenuItemText { get { return "缩放"; } }
- public string ZoomToPageWidth { get { return "页宽"; } }
- public string ZoomToWholePage { get { return "整页"; } }
- }
4 . 加载视图, 设置视图 RDLC 的方法
- private void ShowReportViewer(int index, Microsoft.Reporting.WinForms.ReportDataSource dataSourse, List<Microsoft.Reporting.WinForms.ReportParameter> reportParameters, System.Collections.IEnumerable detailDataSource)
- {
- ReportViewer reportViewer = SelectReportViewer(index);
- // 索引超出范围
- if (reportViewer == null) return;
- if (dataSourse != null)
- {
- reportViewer.LocalReport.ReportPath = GetReportFilePath(dataSourse.Name);
- reportViewer.LocalReport.DataSources.Clear();
- reportViewer.LocalReport.DataSources.Add(dataSourse);
- }
- else
- {
- reportViewer.LocalReport.ReportPath = GetReportFilePath("ChargeFeezyAmountMain");
- reportViewer.LocalReport.DataSources.Clear();
- }
- if (reportParameters != null)
- {
- reportViewer.LocalReport.SetParameters(reportParameters);
- }
- if (detailDataSource != null)
- {
- _subDataSource = detailDataSource as List<ReportDataSource>;
- reportViewer.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
- }
- //if (dataSourse.Name == "CancelArrears")
- //{
- // var pageSettings = reportViewer.GetPageSettings();
- // pageSettings.Landscape = false;
- // reportViewer.SetPageSettings(pageSettings);
- //}
- //else if (dataSourse.Name == "CarrearagePat" || dataSourse.Name == "RecoveryArrears")
- //{
- // var pageSettings = reportViewer.GetPageSettings();
- // pageSettings.Landscape = true;
- // reportViewer.SetPageSettings(pageSettings);
- //}
- reportViewer.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
- reportViewer.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent;
- reportViewer.ZoomPercent = 100;
- reportViewer.RefreshReport();
- }
- private void ShowReportViewer1(int index, List<Microsoft.Reporting.WinForms.ReportDataSource> dataSourse, List<Microsoft.Reporting.WinForms.ReportParameter> reportParameters, System.Collections.IEnumerable detailDataSource)
- {
- ReportViewer reportViewer = SelectReportViewer(index);
- // 索引超出范围
- if (reportViewer == null) return;
- if (dataSourse != null)
- {
- reportViewer.LocalReport.ReportPath = Health.Reports.ReportHelper.GetReportFilePath(dataSourse[0].Name);
- reportViewer.LocalReport.DataSources.Clear();
- foreach (var data in dataSourse)
- {
- reportViewer.LocalReport.DataSources.Add(data);
- }
- }
- else
- {
- reportViewer.LocalReport.ReportPath = Health.Reports.ReportHelper.GetReportFilePath("ChargeFeezyAmountMain");
- reportViewer.LocalReport.DataSources.Clear();
- }
- if (reportParameters != null)
- {
- reportViewer.LocalReport.SetParameters(reportParameters);
- }
- if (detailDataSource != null)
- {
- _subDataSource = detailDataSource as List<ReportDataSource>;
- reportViewer.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
- }
- reportViewer.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
- reportViewer.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent;
- reportViewer.ZoomPercent = 100;
- reportViewer.RefreshReport();
- }
- private ReportViewer SelectReportViewer(int index, bool isReset = true)
- {
- if (isReset) reportViewer.Reset();
- return reportViewer;
- }
- private void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
- {
- foreach (var item in _subDataSource)
- {
- e.DataSources.Add(item);
- }
- }
- public static string GetReportFilePath(string reportFileName)
- {
- string filePath= @"Reports\" + reportFileName + ".rdlc";
- filePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, filePath);
- if(!System.IO.File.Exists(filePath))
- {
- return "";
- }
- return filePath;
- }
调用
来源: http://www.bubuko.com/infodetail-2684620.html