无法将参数传递给使用ObjectDataSource的telerik报告

时间:2014-10-05 13:03:28

标签: c# asp.net-mvc telerik-reporting

我是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报告文档,但无法解决问题。代码中有什么问题?

提前谢谢......

1 个答案:

答案 0 :(得分:1)

我找到了它的解决方案。在设计报告时我忘了添加参数来使用。我按照此链接添加参数http://www.telerik.com/help/reporting/designing-reports-parameters-adding-parameters.html并解决了我的问题。