• rdlc水晶报表在wpf里的使用


    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;
            }

    调用

  • 相关阅读:
    【Python教程】3道循环结构练习题
    python3中实现print不换行的方法
    零基础学Python:字典(Dictionary)详细教程
    TS错误提示
    v-slot的简单理解应用
    Typora使用方法简单整理
    Java基础系列(6)- 面向对象(中)
    monkey基础 (7)
    monkey基础 (6)
    monkey基础 (5)
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/9308553.html
Copyright © 2020-2023  润新知