0

我正在开发一个 Windows 窗体应用程序,我想在单击按钮后将报告加载到 Reportviewer 中。这是通过按下 Windows 窗体后面代码中的按钮触发的事件:

    private void button1_Click(object sender, EventArgs e)
{

    Telerik.Reporting.InstanceReportSource reportSource = new
    Telerik.Reporting.InstanceReportSource();
    reportSource.ReportDocument = new Reportlibrary.Report1();

    reportSource.Parameters.Add(new Telerik.Reporting.Parameter("OrderNumber","123456789"));

    reportViewer1.ReportSource = reportSource;
    reportViewer1.RefreshReport();

}

现在的问题是我不知道如何访问/获取在刷新 Reportviewer 之前添加的参数。报告已经设置了一个数据源。我不知道这是否重要。这就是我现在所拥有的。我已经尝试了一切,我只是没有走得更远。

        public Report1()
        {
            InitializeComponent();

            Position[] all = new Position[]{

               new Position("Test", "Test","test"),

            };

            this.DataSource = all;

             MessageBox.Show("Number: " +
             this.Report.ReportParameters["OrderNumber"].Value.ToString());

        }

有没有办法在 InitializeComponent(); 之后直接获取这个参数?? 我是否需要在报告中添加另一个事件才能访问它?如果是的话,哪个是最好的方法?

非常感谢任何帮助。谢谢

4

2 回答 2

0

在报表本身(不是报表源)的一个实例上设置报表的参数,例如:

        TopPageViews report = new TopPageViews();
        report.ReportParameters["StartDate"].Value = new DateTime(2013, 3, 1);
        report.ReportParameters["EndDate"].Value = new DateTime(2013, 3, 1);

        InstanceReportSource reportSource = new InstanceReportSource();
        reportSource.ReportDocument = report;

        this.reportViewer1.ReportSource = reportSource;
        this.reportViewer1.RefreshReport();

在您的报表构造函数中,在 InitializeComponent 之后,订阅 ItemDataBinding 事件的处理程序:

    this.ItemDataBinding += TopPageViews_ItemDataBinding;

在您的处理程序中,您可以像往常一样获取值:

    DateTime startDateParm = (DateTime)this.ReportParameters["StartDate"].Value;

您可以使用调试器查看该值。

于 2013-05-15T20:12:26.073 回答
0

我知道这是一个老问题,但是在遇到同样的问题之后,我是如何做到的并传递了两个日期参数。

      private void button1_Click(object sender, EventArgs e)
        {
        Report2 report = new Report2();
        report.ReportParameters["datefrom"].Value 
                                 =dateTimePicker1.Value;
        report.ReportParameters["dateto"].Value = dateTimePicker2.Value;

        var rSource = new InstanceReportSource();

        rSource.ReportDocument = report;
        reportViewer1.ReportSource = rSource;
        reportViewer1.RefreshReport();
    }
于 2018-07-20T12:33:45.113 回答