将参数传递给Telerik Report

时间:2012-11-20 13:21:01

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

我在我的网站上添加了一个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;
    }

有人可以指出我正确的方向我无法在互联网上找到任何相关内容。

1 个答案:

答案 0 :(得分: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();
}