我是telerik报道的新手,我在使用ObjectDataSource的ASP.Net MVC 4中创建了简单的报告。我创建了一个类似下面的模型类
[DataObject]
public class StockMonitoring
{
[DataObjectMethod(DataObjectMethodType.Select)]
public List<StockDetail> GetExpiredDrugBrand(int SiteID)
{
//returns list by calling stored procedure which takes SiteID
}
}
在控制器中我正在使用此代码:
using Telerik.Reporting;
..........
............
TypeReportSource Source = new TypeReportSource();
Source.TypeName = typeof(StockMonitoring_Expired).AssemblyQualifiedName;
Source.Parameters.Add(new Parameter("SiteID", SID));
ViewBag.ReportSource = Source;
并查看以下代码:
@(Html.TelerikReporting().ReportViewer()
.Id("reportViewer1")
.ServiceUrl("/api/reports/")
.TemplateUrl("/ReportViewer/templates/telerikReportViewerTemplate-8.1.14.804.html")
.ReportSource((ReportSource) ViewBag.ReportSource)
.ViewMode(ViewModes.INTERACTIVE)
.ScaleMode(ScaleModes.SPECIFIC)
.Scale(1.0)
.PersistSession(false)
)
当我评论这一行时
Source.Parameters.Add(new Parameter("SiteID", SID));
并在我的报告中设置SiteID的设计时间值&#34; StockMonitoring_Expired&#34;这是在VS 2012中创建的,我上面的代码正常工作并且断点命中&#34; GetExpiredDrugBrand&#34;模型中的方法,但当我取消注释上面的行并删除SiteID的设计时间值时,我的代码给出以下错误:
An error has occurred while processing Table 'table1': An error has occurred while resolving 'ObjectDataSource' data source: Cannot convert to type System.Int32
我无法将SiteID参数传递给我的&#34; GetExpiredDrugBrand&#34;该方法又调用存储过程来检索数据。我阅读了telerik报告文档,但无法解决问题。代码中有什么问题?
提前谢谢......
答案 0 :(得分:1)
我找到了它的解决方案。在设计报告时我忘了添加参数来使用。我按照此链接添加参数http://www.telerik.com/help/reporting/designing-reports-parameters-adding-parameters.html并解决了我的问题。