来自DLL

时间:2016-05-26 17:54:18

标签: telerik telerik-reporting

我有一个已编译的报告库。我需要做的是为库报告创建一个变量,然后将其分配给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),但它不会产生任何结果。

1 个答案:

答案 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