Telerik将Windows窗体代码后面的参数报告给报告

时间:2013-05-06 07:46:25

标签: winforms telerik report reporting telerik-reporting

我正在开发一个Windows窗体应用程序,我想在单击一个Button后将Reports加载到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()之后直接获取此参数; ? 我是否需要在报告中添加另一个事件才能访问它?如果是,哪个是最好的方法呢?

任何非常有帮助的帮助。 谢谢

2 个答案:

答案 0 :(得分: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;

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

答案 1 :(得分:0)

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

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