从Silverlight ReportViewer应用程序设置Telerik报告参数

时间:2011-04-14 13:58:21

标签: silverlight parameters telerik reportviewer

我有一个包含Telerik ReportViewer的Silverlight应用程序。我想在代码中选择报告和参数值,并将此信息传递给报告查看器。有谁知道如何做到这一点?我能找到的只是将Report属性设置为报告的名称。

1 个答案:

答案 0 :(得分:3)

如果为ReportViewer的RenderBegin事件定义处理程序,则会收到一个RenderBeginEventArgs参数,该参数带有名为ParameterValues的空NameValueDictionary属性。

您可以将{name,value}对添加到此集合中,它们似乎在报告的Parameters集合中完成。

例如,我有两个名为“InputElementID”和“ReportPeriod”的报表参数。我的RenderBegin处理程序如下所示:

    private void ReportViewer_RenderBegin(object sender, Telerik.ReportViewer.Silverlight.RenderBeginEventArgs args)
    {
        args.ParameterValues.Add("InputElementID", this.elementId);
        args.ParameterValues.Add("ReportPeriod", "fortnight");
    }

但这会引发另一个问题:如何使用新参数重新呈现报告以响应用户交互?例如,在我的情况下,我设置了一个主 - 详细信息页面,左边是RadTreeListView,右边是ReportViewer。每次所选项目发生变化时,我都需要让ReportViewer重新计算。

ReportViewer没有强制重新渲染的方法。并且设置其Report属性不会执行任何操作,因为如果您要更改的所有内容都是参数,则每次报告字符串都相同。

我的hacky解决方案是在我想强制更改时设置ReportServiceUri属性。

// No change, just forces the ReportViewer to re-render itself
this.ReportViewer.ReportServiceUri = new Uri("../ReportService.svc", UriKind.RelativeOrAbsolute);

肯定有更好的方法,但这应该让你去。