如何在我的表单中获取报表查看器中心的表格?

问题描述 投票:0回答:3

我已经从 C# 动态创建了一个报告并成功完成,现在的问题是它是右对齐的,我希望将它放在中心。怎么做 ?

我的代码在这里:

 private void ShowReport()
 {
      ReportDataSource rds = new ReportDataSource("MyData", m_dataSet.Tables[0]);
      this.reportViewer1.LocalReport.DataSources.Add(rds);

      this.reportViewer1.RefreshReport();

      this.reportViewer1.LocalReport.LoadReportDefinition(m_rdl);
      reportViewer1.LocalReport.GetDefaultPageSettings().Margins.Right = 125; //Has no effect 
      this.reportViewer1.RefreshReport();   
 }

我也尝试过:

 public static Rdl.Report CreateReport(string groupBy)
        {
            Rdl.Report report = new Rdl.Report();
            try
            {
                report.Items = new object[] 
                {
                    CreateDataSources(), 
                    CreateHeader(groupBy),  
                    CreateBody(groupBy), 
                    CreateDataSets(), 
                    "9.5in", 
                    "1.5in",
                };
                report.ItemsElementName = new Rdl.ItemsChoiceType37[]
                { 
                    Rdl.ItemsChoiceType37.DataSources, 
                    Rdl.ItemsChoiceType37.PageHeader,
                    Rdl.ItemsChoiceType37.Body,
                    Rdl.ItemsChoiceType37.DataSets,
                    Rdl.ItemsChoiceType37.Width,
                    Rdl.ItemsChoiceType37.LeftMargin,

                };
            }
            catch (Exception ex) { }
            return report;
        }

请注意,我不必设置reportviewer的对齐方式,我必须在reportviewer上设置report的对齐方式。

c# .net rdlc reportviewer dynamic-rdlc-generation
3个回答
1
投票

无需计算文档和工作区域大小,我发现 ReportViewer 的以下属性即可解决问题。

将此代码放入表单的初始化方法中。

ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
ReportViewer1.ZoomMode = ZoomMode.PageWidth;

这会将文档居中对齐,并使其与表单的尺寸完美契合。


0
投票

我不确定是否可以使用任何类型的 ReportViewer 控件属性。大多数情况下,我只是目视它,但如果精度对您来说是首要任务:我之前使用过一些代码来实现这一点。

如果愿意的话,可以提供解决方法;

private void ReportViewer1_Resize(object sender, EventArgs e)
    {
        // Center report
        ReportPageSettings rps = ReportViewer1.LocalReport.GetDefaultPageSettings();
        if (ReportViewer1.ParentForm.Width > rps.PaperSize.Width)
        {
            int hPad = (ReportViewer1.ParentForm.Width - rps.PaperSize.Width) / 2;
            ReportViewer1.Padding = new Padding(hPad, 1, hPad, 1);
        }

编辑:顺便说一句,您基本上可以使用大多数方法的代码。让我知道它是否适合您。

Edit#2:我也不确定你是否在谈论表格,或者你想要居中的 ReportViewer 本身。希望它对你有用。


0
投票

我设置了这个但不起作用。通过 Windows 10

ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout);

ReportViewer1.ZoomMode = ZoomMode.PageWidth;

© www.soinside.com 2019 - 2024. All rights reserved.