3

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

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

        ReportViewer.Report = report;

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

我看过的地方:

谢谢您的帮助,

克里斯

4

3 回答 3

2

我能够通过更改 MyCustomReportLibrary.TelerikReport 的构造函数来使其工作。希望这可以帮助任何寻找答案的人。

很像这个例子 Telerik Forums | 将报告参数从 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;
    }
于 2011-09-22T15:23:43.217 回答
1

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

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();
}
于 2016-02-01T16:32:27.717 回答
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();


        }
    }
于 2015-03-28T06:30:36.093 回答