【问题标题】:Passing parameter to Telerik Report将参数传递给 Telerik Report
【发布时间】:2012-11-20 13:21:00
【问题描述】:

我有一个 Telerik 报告项目添加到我的网站,我正在尝试将参数传递给它,但我收到以下错误

错误:

对象引用未设置为对象的实例。

Asp.net 代码

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostBack)
    {
        MembershipCard rpt = new MembershipCard();
        // Error occuring here
        rpt.ReportParameters["@MemberID"].Value = "5"; // Request["MemberID"];
        ReportViewer1.Report = rpt;
    }        
}

Telerik 报告类

    public MembershipCard()
    {
        /// <summary>
        /// Required for telerik Reporting designer support
        /// </summary>
        InitializeComponent();
        this.DataSource = null;
    }

    private void MembershipCard_NeedDataSource(object sender, EventArgs e)
    {
        string proc = "rpt_MembershipCard" + this.ReportParameters["@MemberID"].Value.ToString();
        SqlDataAdapter adapter = new SqlDataAdapter(proc, "Data Source=(local); Initial Catalog= northwind; intergrated security = True");
        DataSet dataSet = new DataSet();
        adapter.Fill(dataSet);
        (sender as Telerik.Reporting.Processing.Report).DataSource = dataSet;
    }

谁能指出我正确的方向我在互联网上找不到任何相关的东西。

【问题讨论】:

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


    【解决方案1】:

    问题是您没有提供参数。尝试改变:

    rpt.ReportParameters.Add("MemberID", "5");
    

    还有:

    string proc = this.ReportParameters["MemberID"].Value.ToString();
    

    另外,如果您在解决方案中添加了DataSet.xsd 文件,请使用其生成的TableAdapter

    存储过程示例:

    using System.Data;
    using YourNamespace.StoredProcedureNameTableAdapter;
    
    //Keep in mind StoredProcedureName is taken from SP name in your database
    //when you add DataSet.xsd to your solution by default if you don't change anything
    
    private void ClassName_NeedDataSource(object sender, EventArgs e)
    {
       int someID = int.Parse(this.ReportParameters["ParameterID"].Value.ToString());
       StoredProcedureNameTableAdapter adapter = new StoredProcedureNameTableAdapter();
       DataSetFile.StoredProcedureNameDataTable data = adapter.GetData(someID); //DataSetFile is DataSetFile.xsd and GetData is method name you defined on DataSetFile.xsd creation
       ((Telerik.Reporting.Processing.Report)sender).DataSource = data.AsDataView();
    }
    

    【讨论】:

    • 当我尝试您的建议时,我收到错误“rpt_PrintMembershipCard”不包含“ReportParameters”的定义,并且找不到接受“rpt_PrintMembershipCard”类型的第一个参数的扩展方法“ReportParameters”(是您缺少 using 指令或程序集引用?)
    • @Wellie 是您创建的报告的 rpt_PrintMembershipCard 名称吗?您应该有 rpt_PrintMembershipCard.cs 文件。你的类定义应该是:public partial class rpt_PrintMembershipCard : Telerik.Reporting.Report
    • .cs 文件是 MembershipCard.cs,报表查看器所在的网页是 rpt_PrintMembershipCard
    • 第一个代码块是您在 ASP.NET 页面代码中编写的内容。请记住,rpt 与您在代码中使用的引用相同。其他 2 个块写入报告代码部分。你能复制给你例外的那一行吗?
    • 这里抛出异常 rpt.ReportParameters["@MemberID"].Value = "5";' 但事实证明我在声明时缺少@参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2011-02-04
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    相关资源
    最近更新 更多