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

时间:2011-09-22 00:24:44

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

问题: 我试图将页面上的查询字符串中的报表参数值传递给已经定义了参数的报表。我似乎无法将值传递到报告中。

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

        ReportViewer.Report = report;

上面的语法很好,但是当 TelerikReport()构造函数创建变量“report”时,它还没有参数的值,当我设置它之后似乎并不重要。即使我尝试调用 ReportViewer.RefreshReport()

我看过的地方:

感谢您的帮助,

克里斯

3 个答案:

答案 0 :(得分:2)

我能够通过更改Contructor for MyCustomReportLibrary.TelerikReport来使其工作。希望这有助于任何寻找答案的人。

很像这个例子 Telerik Forums | Pass Report parameters from Rad window to a telerik report

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;
    }

答案 1 :(得分:1)

我将提供另一个简单的答案,适用于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();
}

答案 2 :(得分:0)

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

在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();


        }
    }