2016-05-26 25 views
0

我有一個彙編的報告庫。我需要做的是爲庫報告創建一個變量,然後將其分配給ReportDocument,以便生成報告。我只想要一個單獨的aspx頁面,但希望instanceReportSource是動態的。我正在使用VS2013 webforms。我目前的做法是爲每個報告創建一個頁面,如下所示。來自DLL的動態instanceReportSource

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 

如果我不明白我想要做的就是更換新CTEReportsClassLibrary.rpt_fup_X0611,分配給instanceReportSopurce.ReportDocument,以表示該報告的變量。 我試過了一些涉及從dll(7287958)獲取字符串的想法,但它不會爲結果產生任何結果。

回答

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