我有一个已有10多年历史的ASP.net VB.Net网站,该网站是我继承的,并且我正尝试从WebSite更新到Web应用程序。其中一个页面是报告页面,该页面基于下拉选择加载Reportviewer控件,但是在运行时我收到以下错误:“报告处理期间发生错误。 找不到在ObjectDataSource的TypeName属性中指定的类型。”
我已经搜索了几天的最佳时间,并且根据我从Typed dataset not recognized when moved to another project中发现的信息,我们设法重新生成了XSD。我还按照其他人的建议将XSD属性“构建操作”修改为“内容”,并将“自定义工具”设置为“ MSDataSetGenerator”,但错误消息仍然存在。
已经生成了XSD,我可以看到该类并创建它的实例,并且从消息中很明显,没有找到ObjectDataSource的TypeName(空白),但是我真的不确定它是什么。除了名称空间和数据表名称外,它们都应生成为“ Reports.dtAprdParmsDateAprdDataTable”
基本代码想法是将XSD数据集映射到ObjectDataSource,然后将其用作ReportDataSource的燃料:
Dim myObjDataSource As New ObjectDataSource()
myObjDataSource.SelectMethod = "GetData"
myObjDataSource.OldValuesParameterFormatString = "original_{0}"
myObjDataSource.TypeName = "Reports.dtAprdParmsDateAprdDataTable"
myObjDataSource.SelectParameters.Add("FiscalStartDate", TypeCode.DateTime, myFiscalYear.StartDate.ToString("MM/dd/yyyy"))
myObjDataSource.SelectParameters.Add("FiscalEndDate", TypeCode.DateTime, myFiscalYear.EndDate.ToString("MM/dd/yyyy"))
'FilterRows
myObjDataSource.FilterExpression = myUser.GetListRowFilter
If myObjDataSource.FilterExpression = "" Then
myObjDataSource.FilterExpression = GetReportViewerRowListFilter()
ElseIf Not GetReportViewerRowListFilter() = "" Then
myObjDataSource.FilterExpression = myObjDataSource.FilterExpression & " AND " & GetReportViewerRowListFilter()
End If
ReportViewer1.ProcessingMode = ProcessingMode.Local
ReportViewer1.LocalReport.ReportPath = "Report01.rdlc"
ReportViewer1.LocalReport.DataSources.Clear()
ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("Reports_dtAprdParmsDateAprd", myObjDataSource))
ReportViewer1.LocalReport.Refresh()
'I am able to declare the newly generated XSD no problems
Dim report As New Reports.dtAprdParmsDateAprdDataTable()
有人知道如何解决吗?我很高兴用较新的功能替换这些功能,但是由于该功能已经存在并且一直在起作用,因此感觉应该很简单。