Telerik报表|通过查询字符串设置报表参数



问题:我正试图将页面上的查询字符串中的"报表参数"值传递给已定义该参数的报表。我只是似乎无法将值一直传递到报告中。

        Telerik.Reporting.Report report = new MyCustomReportLibrary.TelerikReport();
        report.ReportParameters["parameterName"].Value = Request.QueryString["Id"];
        ReportViewer.Report = report;

上面的语法很好,但当变量"report">TelerikReport((构造函数创建时,它还没有参数值,当我在事后设置它时,这似乎无关紧要。即使我尝试调用ReportViewer.RefreshReport((.

我看过的地方:

  • Telerik关于在Web应用程序中使用Telerik报告的文档
  • Telerik社区支持
  • 我还提交了一张telerik支持票,但明天是保加利亚独立日

感谢您的帮助,

Chris

我通过更改MyCustomReportLibrary.TelerikReport的构造函数使其发挥作用。希望这能帮助任何寻找答案的人。

很像这个例子Telerik论坛|将报告参数从Rad窗口传递到Telerik报告

Telerik报告代码(TelerikReport.cs(

    public TelerikReport(int Id)
    {
        //
        // Required for telerik Reporting designer support
        //
        InitializeComponent();
        this.ReportParameters["parameterName"].Value = Id;
    } 

ASP.Net页面代码(ReportViewerPage.cs(

    protected void Page_Load(object sender, EventArgs e)
    {
        Report raReport = new TelerikReport(Request.QueryString["Id"] as int);
        ReportViewer1.Report = raReport;
    }

我将提供另一个简单且适用于MVC的答案(2015年第3季度(。

MVC

@(Html
.TelerikReporting()
.ReportViewer()
.Id("reportViewer1")
.ServiceUrl(Url.Content("/Controllers/Reports/"))
//Setting the ReportSource Parameters overrides the default specified in the report.
.ReportSource(new TypeReportSource() { TypeName = @ViewBag.TypeName, Parameters = { new Parameter("startDate", Request.QueryString["startDate"]) } }) 
//To make the query string parameter optional, try:
//.ReportSource(new TypeReportSource() { TypeName = @ViewBag.TypeName, Parameters = { Request.QueryString["startDate"] != null ? new Parameter("startDate", Request.QueryString["startDate"]) : new Parameter() } })
.ViewMode(ViewMode.Interactive)
.ScaleMode(ScaleMode.Specific)
.Scale(1.0)
.PersistSession(false)
.PrintMode(PrintMode.AutoSelect)
)

这份报告没有什么特别之处。

public TelerikApplicationReport()
{
    InitializeComponent();
}

这是另一个例子。将参数直接传递到报表。

在Asp.net页面

protected void Button1_Click(object sender, EventArgs e)
        {
            var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
            instanceReportSource.ReportDocument = new SampleReport(TextBox1.Text);
            this.ReportViewer1.ReportSource = instanceReportSource;
        }

报告中

public partial class SampleReport : Telerik.Reporting.Report
    {
        public SampleReport(string invoiceNumber)
        {           
            InitializeComponent();

        }
    }

最新更新