我有一个winforms应用程序,它具有一个停靠在devexpress.Xtratabpage控件中的reportviewer控件。我已经在SSRS中创建了一个报告,并希望报表查看器通过设置ReportServerURL和ReportPath属性然后调用RefreshReport来显示此报表。 (我的报告有参数,我试图在表单上使用我自己的控件而不是在报告的本机参数栏中设置,但我认为这是无关紧要的,因为问题似乎与报告的参数无关)< / p>
每当我的代码运行以设置ReportViewer的属性时,只要我尝试A)刷新报告,它就会抛出异常。或B)设置参数。
例外是:
无法加载文件或程序集“Microsoft.ReportViewer.WinForms.XmlSerializers,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其中一个依赖项。系统找不到指定的文件。
通过网址使用BIDS或SSRS的报告查看器,报告在VS2010之外正常工作。我还创建了另一个winforms项目,其中一个报表查看器停靠在Devexpress Tabcontrol页面中,看看我是否可以重新创建问题,但没有。报告工作正常!我已经开始在应用程序和测试中通过设计器和编程方式设置reportviewer的属性,每次都可以在我的测试应用程序中正常工作,但不能在真实的应用程序中工作。在两者中搜索了项目的输出后,“Microsoft.ReportViewer.Winforms.XMLSerializers”不在任一项目的文件夹中。从我记得使用旧Web服务时,我记得“?.XMLSerializers”是您使用SGEN.exe时获得的文件。我无法解决的是为什么我的“真实”项目坚持认为它需要它,当测试版本没有!
代码提取我用来初始化然后显示报告的两种方法...
Private Sub InitialiseReports()
Try
'Initailise Slips
ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Remote
ReportViewer1.ServerReport.ReportPath = My.Settings.CommissionsSlipsReport
ReportViewer1.ServerReport.ReportServerUrl = New Uri(My.Settings.ReportServer, System.UriKind.Absolute)
'ReportViewer1.ServerReport.Refresh()
Catch ex As Exception
clsExceptionHandler.HandleException(ex, Me, True, "An Error Occurred Initialising Reports. You may not be able to view Reports in this Session!", MsgBoxStyle.OkOnly, MessageBoxIcon.Error)
End Try
End Sub
Private Sub sbtn_CSlips_View_Click(sender As System.Object, e As System.EventArgs) Handles sbtn_CSlips_View.Click
'Setup parameter collection
'Dim pInfo As ReportParameterInfoCollection
Dim paramList As New Generic.List(Of ReportParameter)
'pInfo = RptVwr_Slips.ServerReport.GetParameters()
Dim paramWeekEnding, paramDriver, paramHeaderID As ReportParameter
If IsNothing(LkupEdt_Slips_WkEnding.EditValue) Then
paramWeekEnding = New ReportParameter("WeekEnding")
Else
paramWeekEnding = New ReportParameter("WeekEnding", LkupEdt_Slips_WkEnding.EditValue.ToString, False)
End If
If IsNothing(LkupEdt_Slips_CommNo.EditValue) Then
paramDriver = New ReportParameter("DriverID")
Else
paramDriver = New ReportParameter("DriverID", LkupEdt_Slips_Driver.EditValue.ToString, False)
End If
If IsNothing(LkupEdt_Slips_CommNo.EditValue) Then
paramHeaderID = New ReportParameter("CommissionNumber")
Else
paramHeaderID = New ReportParameter("CommissionNumber", LkupEdt_Slips_CommNo.EditValue.ToString, False)
End If
paramList.Add(paramWeekEnding)
paramList.Add(paramDriver)
paramList.Add(paramHeaderID)
ReportViewer1.ServerReport.SetParameters(paramList)
'Refresh the report
ReportViewer1.ServerReport.Refresh()
End Sub
对于Reportviewer和SSRS一般都是新手,我希望我错过了一些明显的东西,但我认为我没有。谁能摆脱任何光明?这是一个显示阻止,因为我不得不向IE展示显示报告,这是一个非常难看的解决方法!