2012-11-20 81 views
1

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

Error:

Object reference not set to an instance of an object.

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

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

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(); 
} 
+0

当我尝试你的建议,我得到的错误“rpt_PrintMembershipCard”不包含“ReportParameters”的定义,并没有扩展方法“ReportParameters”接受一个类型的第一个参数“ rpt_PrintMembershipCard“可以找到(您是否缺少使用指令或程序集引用?) – Noelle

+0

@Wellie是您创建的报告的rpt_PrintMembershipCard名称?你应该有rpt_PrintMembershipCard.cs文件。 您的班级定义应该是: '公共部分班级rpt_PrintMembershipCard:Telerik.Reporting.Report' –

+0

.cs文件是MembershipCard.cs并且报告查看器所在的网页是rpt_PrintMembershipCard – Noelle