我正在开发一个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()之后直接获取此参数; ? 我是否需要在报告中添加另一个事件才能访问它?如果是,哪个是最好的方法呢?
任何非常有帮助的帮助。 谢谢
答案 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();
}