如何在asp.net中为RDLC ReportPath设置动态URL?

时间:2015-09-29 09:00:40

标签: c# asp.net vb.net rdlc dynamic-rdlc-generation

我使用下面的代码将RDLC文件从一个应用程序调用到另一个应用程序。下面的代码驻留在一个应用程序中。 RDLC文件驻留在另一个应用程序中。

 Dim RptVwr As New Microsoft.Reporting.WebForms.ReportViewer()
 Dim ds As DataSet = OBJ.GetInventoryProductDetails(plannerCode)
 Dim RptDtSrc As New Microsoft.Reporting.WebForms.ReportDataSource()
 RptDtSrc.Name = "XXXXXX1"
 RptDtSrc.Value = ds.Tables(0)
 RptVwr.LocalReport.DataSources.Add(RptDtSrc)

 Dim RptDtSrc1 As New Microsoft.Reporting.WebForms.ReportDataSource()
 RptDtSrc1.Name = "XXXXXX2"
 RptDtSrc1.Value = ds.Tables(1)
 RptVwr.LocalReport.DataSources.Add(RptDtSrc1)

 RptVwr.LocalReport.ReportPath = "http://localhost:58154/RDLC/GLA_InspectionList.rdlc"
 RptVwr.LocalReport.EnableHyperlinks = True
 Dim excelcontent As Byte() = RptVwr.LocalReport.Render("Excel", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)

 Dim FS As FileStream
 FS = New FileStream(Save, FileMode.Create)
 FS.Write(excelcontent, 0, excelcontent.Length)
 FS.Close()

但是在excel文件生成期间,上面的代码失败了。如何解决上述问题?

1 个答案:

答案 0 :(得分:0)

我相信您忘记添加DataSource,因此您的报告中无法显示任何内容。

RptVwr.LocalReport.DataSources.Add(myDataSource)

更新:我认为问题可能是因为第二个项目在DataSet中使用了不同的类。确保您使用的是正确的类和属性。

也许您可以通过添加一个简单的数据源进行测试来测试它。例如,像这样的行:

RptVwr.LocalReport.Add(New ReportDataSource("MyClass", New List(Of [MyClass])() From { _
    New [MyClass]() With { _
        Key .MyProp = "MyProp" _
    } _
}))