我有一个已编译的报告库。我需要做的是为库报告创建一个变量,然后将其分配给ReportDocument,以便生成报告。我只想要一个aspx页面,但希望instanceReportSource是动态的。我正在使用VS2013 webforms。我目前的做法是为每个报告创建一个页面,如下所示。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim instanceReportSource As New Telerik.Reporting.InstanceReportSource()
instanceReportSource.ReportDocument = New CTEReportsClassLibrary.rpt_fup_X0611
instanceReportSource.Parameters.Add(New Telerik.Reporting.Parameter("Selection", Request.QueryString("Param1")))
instanceReportSource.Parameters.Add(New Telerik.Reporting.Parameter("txtCriteria", Request.QueryString("Param2")))
ReportViewer1.ReportSource = instanceReportSource
ReportViewer1.RefreshReport()
End Sub
如果我不清楚我想要做的是用一个代表报告的变量替换分配给instanceReportSopurce.ReportDocument的New CTEReportsClassLibrary.rpt_fup_X0611。 我尝试了一些涉及从dll获取字符串的想法(7287958),但它不会产生任何结果。
答案 0 :(得分:0)
我找到了这个解决方案,这将允许我通过搜索包含在解决方案中的dll,因此我只有一个页面来显示我的报告,而不是每个报告都需要一个页面。
Private Const REPORTTYPE As String = "CTEReportsClassLibrary.{0}, CTEReportsClassLibrary"
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim strReport As String = Request.QueryString("ReportName")
Dim T As Type = Type.GetType(String.Format(REPORTTYPE, strReport), True)
Dim report As IReportDocument = DirectCast(Activator.CreateInstance(T), IReportDocument)
Dim irs = New InstanceReportSource()
irs.Parameters.Add(New Telerik.Reporting.Parameter("Selection", Request.QueryString("Selection")))
irs.Parameters.Add(New Telerik.Reporting.Parameter("txtCriteria", Request.QueryString("txtCriteria")))
irs.ReportDocument = report
Me.ReportViewer1.ReportSource = irs
Me.ReportViewer1.RefreshReport()
End Sub